这个问题已经有了答案:
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'))
:无法添加或更新子项
行:外键约束失败(sakila
staff
,约束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/