2013-05-06 32 views
0

我有兩個MySQL表: 1-客戶 2- lite_orderPHP的MySQL的外鍵

客戶表列: CUSTOMER_ID主鍵和自動遞增場 電子郵件 hashed_pa​​ssword

lite_order申請包含了所有的訂單字段可能不止一個訂單屬於同一個客戶,我有很多領域。最重要的:

lite_order_id主鍵和自動遞增字段 customer_id我把它作爲「索引」,並從phpmyadmin的關係視圖中選擇此列作爲引用客戶表中的主鍵的外鍵。

問題是,當一個新的客戶簽約,他的信息涉及到客戶表,d,他填補了一個訂單,其數據應該去lite_order表我就在這一步的錯誤:

Error: Cannot add or update a child row: a foreign key constraint fails (`DB_NAME`.`lite_order`, CONSTRAINT `lite_order_ibfk_2` FOREIGN KEY (`customer_id`) REFERENCES `customers` (`customer_id`) ON UPDATE CASCADE) 

我該如何解決這個錯誤?我有客戶表工作,客戶表中的customer_id現在有一個值,但是我需要這個值也會在訂單表單提交後一直到另一個表中的customer_id列。我得到這個錯誤!

+0

http://php.net/manual/en/ pdo.lastinsertid.php – 2013-05-06 13:48:18

+0

你能澄清你想要做什麼嗎?上面的評論和當前的答案解決了稍有不同的問題。 – Izkata 2013-05-06 13:58:46

+0

我有2個表和第二個表中的外鍵,當我將數據插入到lite_order表中時,我想要將主鍵的值插入另一個表中的FK列。我認爲FK應該自動獲得PK的價值嗎?因爲我已啓用會話並且客戶在使用訂單頁面時已登錄。 – 2013-05-07 09:45:20

回答

0

通過將外鍵「customer_id」分配到表「lite_order」中,可以確保數據的可靠性。我的意思是一個lite_order不能在沒有客戶的情況下插入。

所以你必須先插入你的客戶,然後你的訂單。

取決於你用什麼擴展名(MySQL和mysqli的,PDO),您可以通過獲得最後插入CUSTOMER_ID: - mysql - mysqli - pdo

+0

客戶表數據插入成功,當客戶填寫訂單時,訂單表的數據必須進入lite_order表,並且這一步我得到的錯誤是因爲lite_order表中的外鍵沒有得到客戶表中的主鍵自動生成。 – 2013-05-07 09:42:58

+0

客戶表中的數據已經插入,但是在lite訂單中,是否必須編寫mysql代碼以將客戶表中的customer_id插入lite_order表中的customer_id,否則它將自動發生? – 2013-05-07 10:48:43

+0

您必須在'lite_order_table'中指定'customer_id',它不是自動的。 – antoox 2013-05-07 12:13:38