2013-05-06 83 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