【问题标题】:Can't insert foreign key value into linking table无法将外键值插入链接表
【发布时间】:2012-01-04 14:38:33
【问题描述】:

我目前正在尝试将数据插入到名为 "customer_quote" 的表中,该表充当 "customer" 表和 表之间的链接表“customer_tariffs” 表。它还记录了通过 "user" 表汇总数据的用户。

这是我的数据库的架构:

http://i.imgur.com/LOG1T.png

这是一张不允许我插入的表格的屏幕截图。

http://i.imgur.com/i2wiU.png

这是我插入数据库的过程:

  1. 将数据插入客户表
  2. 使用 mysql_insert_id 检索行 ID
  3. 将数据插入 customer_quote

代码如下:

    //code above this inserted data into customer table

//get id of row where data was just inserted
$sustomer->cid = mysql_insert_id($db);

//insert into customer_quote table
$database->query("INSERT INTO customer_quote (cid)
        Values ('$customer->cid')");

** 新的错误消息**

'无法添加或更新子行:外键约束失败 (quote_system.customer_quote, CONSTRAINT fk_customer_quote_customer FOREIGN KEY (cid) REFERENCES customer (id) ON DELETE NO ACTION更新无操作)'

如您所见,错误反馈是无用的,所以经过大约三个小时的测试后,我得出的结论是,问题出在“客户报价”表中的“cid”列。

它只接受某些值,但是我自己的 php 变量具有正确的值,可以通过 phpmyadmin 插入,如下面的屏幕截图所示。

http://i.imgur.com/eEFou.png

所以一定是我的表中的约束或其他东西阻止了我?

任何想法如何解决这个问题。

谢谢!

【问题讨论】:

  • 喜欢详细的帖子......我只是希望我的回答是错误的......因为你可以通过添加) 来节省所有的努力......
  • 1.您似乎没有使用刚刚获得的 cid 变量?但取而代之的是客户-> cid?我想这些解决同一件事? 2. 我不是 PHP 专家,但你的代码不应该是:“INSERT INTO customer_quote (cid) Values ('$customer->cid')”) - 你缺少一个括号
  • 对不起,这是一种类型,我是手动输入代码而不是粘贴 - 哎呀!

标签: php mysql foreign-keys constraints


【解决方案1】:

我真的希望您的问题是一个简单的错字,但您的查询不正确:

$database->query("INSERT INTO customer_quote (cid)
        Values ('$customer->cid'");

应该是

$database->query("INSERT INTO customer_quote (cid)
        Values ('$customer->cid')"); // added closing bracket on values

【讨论】:

  • 谢谢,但现在我收到此错误:-'无法添加或更新子行:外键约束失败 (quote_system.customer_quote, CONSTRAINT fk_customer_quote_customer FOREIGN KEY (@987654326 @) 参考customer (id) 删除时没有操作更新没有操作)' i
  • 除非满足所有约束条件,否则您无法将数据插入表中 - 您的架构显示 ciduid 不可为空......即它们都是必需的
【解决方案2】:

你放错了双引号并错过了括号

换行:

$database->query("INSERT INTO customer_quote (cid)
    Values ('$customer->cid'");

$database->query("INSERT INTO customer_quote (cid)
    Values ('$customer->cid')");

【讨论】:

  • 谢谢,但现在我收到此错误:-'无法添加或更新子行:外键约束失败 (quote_system.customer_quote, CONSTRAINT fk_customer_quote_customer FOREIGN KEY (@987654326 @) 参考customer (id) 删除时没有操作更新没有操作)' i
  • @loosebruce:$customer->cid 的值在客户表中不存在。
【解决方案3】:

插入末尾缺少 )...

//insert into customer_quote table
$database->query("INSERT INTO customer_quote (cid) Values ('$customer->cid'");

应该是

//insert into customer_quote table
$database->query("INSERT INTO customer_quote (cid) Values ('$customer->cid')");

顺便说一句,带有图片等的好帖子......

【讨论】:

  • 谢谢,但现在我收到此错误:-'无法添加或更新子行:外键约束失败 (quote_system.customer_quote, CONSTRAINT fk_customer_quote_customer FOREIGN KEY (@987654326 @) 参考customer (id) 删除时没有操作更新没有操作)' i
  • 嗯,它说根据客户表 ID 无效。您的用户表可能会发生同样的事情,因为您在非空表中插入 NULL。
【解决方案4】:

你少了一个括号:

"INSERT INTO customer_quote (cid) Values ('$customer->cid')"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-04-29
    相关资源
    最近更新 更多