php - 在PHP/MySQL中插入值时出现外键约束错误

标签 php mysql database constraints

这个问题已经有了答案:
ERROR 1452: Cannot add or update a child row: a foreign key constraint fails
11个答案
我已经用php将html页面中的表单值插入到数据库中,但我必须将其与另一个表结合起来。一个查询将一些值插入到地址表中,这样就可以工作了。从地址查询中提取maxid值之后,我必须使用它将其他值输入到一个“staff”表中。当我注释掉staff表查询时,它就工作了。当代码处于活动状态时,会出现以下错误:
无法从sakila成功运行查询(INSERT INTO staff (first_name, last_name, address_id, email, store_id) VALUES ('Hunter', 'Norman', '', 'Test@mail.com', '2')):无法添加或更新子项
行:外键约束失败(sakilastaff,约束
fk_staff_address外键(address_id)引用address
(更新级联时为address_id
我之前被帮助修复了关联索引,但仍然有错误。代码如下:

    $maxQuery = "SELECT MAX(address_id) FROM address";
    $result = mysqli_query($connect, $maxQuery);
    $row = mysqli_fetch_assoc($result);
    if (!$result) 
    {
        die("Could not successfully run query ($userQuery) from $db: " .    
        mysqli_error($connect) );
    }
    else 
    { 

        print ("<p>Max Address ID:".$row['MAX(address_id)']."</p>");

    }




    $userQuery1 = "INSERT INTO staff (first_name, last_name, address_id,     email, store_id)
           VALUES ('$first_name', '$last_name', '{$row[MAX(address_id)]}',   '$email', '$store_id')";
    $staffResult =  mysqli_query($connect, $userQuery1);
    if (!$staffResult) 
    {
        die("Could not successfully run query ($userQuery1) from $db: " .   
        mysqli_error($connect) );
    }   
        else
    {
    print(" <h1>New Staff Record Added!</h1>");
    print ("<p>The following record was added:</p>");
    print("<table border='0'>
            <tr><td>First Name</td><td>$first_name</td></tr>
            <tr><td>Last Name</td><td>$last_name</td></tr>
            <tr><td>Email</td><td>$email</td></tr>      
            <tr><td>Store ID</td><td>$store_id</td></tr>
            <tr><td>Address</td><td>$address</td></tr>
            <tr><td>City</td><td>$city</td></tr>
            <tr><td>District</td><td>$district</td></tr>
            <tr><td>Postal Code</td><td>$postal_code</td></tr>
            <tr><td>Phone</td><td>$phone</td></tr>
            </table>");
}      

最佳答案

访问数组时缺少一些引号。另外,假设fk是一个数字,则查询中的引号是不必要的。
应该是:

$userQuery1 = "INSERT INTO staff (first_name, last_name, address_id, email, store_id) VALUES ('$first_name', '$last_name', {$row['MAX(address_id)']}, '$email', '$store_id')";

提示:如果您var_dump()$userQuery1您将看到它正在运行。另外,如果打开了php警告,您会看到它试图用一个常量来执行phpmax()函数,它假定这个常量是一个字符串,address_id

关于php - 在PHP/MySQL中插入值时出现外键约束错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40753233/

相关文章:

php 返回混合数据类型——好还是坏

php 文件上传适用于某些但并非所有具有相同文件类型的文件

java - 如何优化从平面文件到 BD PostgreSQL 的数据导入?

mysql - 如何在 MySQL Server 5.1 中输入印度卢比符号?

java - 我该如何用 PHP 前端+后端系统架构 JasperReports

php - 使用推送器将所有消息保存在我的服务器上

php - 通过 PHP 使用 Exchange 管理单元执行 powershell 脚本

mysql - 如何在 C++ Builder XE 中编辑计算字段值

mysql - sequelize.js orm :Unique email validation for mysql not working

mysql - 无法连接到 '10.52.244.189' 上的 MySQL 服务器 ((1040, u'连接过多'))")