簡體   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