无法将外键值插入链接表

时间:2012-01-04 14:38:33

标签: php mysql foreign-keys constraints

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

这是我的数据库的模式:

http://i.imgur.com/LOG1T.png enter image description here

这是表格的截图,不允许我插入其中。

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

enter image description here

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

  1. 将数据插入客户表
  2. 使用mysql_insert_id
  3. 检索行ID
  4. 将数据插入 customer_quote < --- Not working!
  5. 以下是代码:

        //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_systemcustomer_quote,CONSTRAINT fk_customer_quote_customer FOREIGN KEY(cid)参考{{1} }(customer)ON DELETE NO ACTION ON UPDATE NO ACTION)'

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

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

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

    enter image description here

    所以它必须是我桌子上的约束或其他东西阻止我?

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

    谢谢!

4 个答案:

答案 0 :(得分:2)

你错误地把双引号错过了一个parens

更改行:

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

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

答案 1 :(得分:2)

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

$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

答案 2 :(得分:2)

你的插页结尾处有一个遗漏...

//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')");

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

答案 3 :(得分:1)

你错过了一个括号:

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