如何通过一个空值从HTML形式到mysql数据库外键字段


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

我有两个表:parent和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代码服务器端验证它们。因为我可以很容易地操作标记中的值并添加任何父/子组合。