繁体   English   中英

如何将空值从HTML表单传递到mysql db外键字段

[英]How to pass a null value from HTML form to mysql db foreign key field

我有两个表:父母和孩子。 子列之一引用具有FOREIGN KEY约束的父PRIMARY KEY-child.parent_id引用parent.parent_id。

子表中的外键列允许使用NULL值,因为创建子项的时间可能未知。 但是,当有关父项的信息将被分配/更新时,我希望具有参照完整性。

现在的问题是:

如何将空值从HTML表单传递给MySQL? 用引号''或“”无效“外键约束失败”,可能是因为它传递了空字符串而不是空值。 或者,也许我需要在PHP中进行一些附加检查并将其转换为null?

CREATE TABLE IF NOT EXISTS `parent` (
  `parent_id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `surname` varchar(20) NOT NULL,
  PRIMARY KEY (`parent_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

CREATE TABLE IF NOT EXISTS `child` (
 `child_id` int(11) NOT NULL AUTO_INCREMENT,
 `child_name` varchar(20) NOT NULL,
 `parent_id` int(11) DEFAULT NULL,
 PRIMARY KEY (`child_id`),
 KEY `fk_parent_id` (`parent_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

ALTER TABLE `child`
  ADD CONSTRAINT `fk_parent_id` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`parent_id`);

您需要将空值转换为null或在PHP中编辑查询。

为什么你想传递一个NULL值时,你的表不支持NULL父值?

`parent_id` int(11) DEFAULT NULL,

应该NOT NULL因为孩子应该始终有一个父母。

如果您尝试通过HTML表单传递父/子标识符,我建议在您的PHP代码中在服务器端对其进行验证。 因为我可以轻松地操纵标记中的值并添加我希望的任何父/子组合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM