Php 如何修复';外键约束失败';在mysql中
我在PHP中设置了一个简单的CRUD,我在phpmyadmin中创建了两个表,一个用于个人信息(姓名、姓氏、电子邮件、电话),另一个用于其他电话号码。我在设置外键以连接两个表时遇到问题。额外的电话号码是在jQuery的帮助下从用户处动态添加的(可以调用或不调用,取决于用户是否有两个电话号码)。 有人能指出我犯错误的地方吗。 我对PHP的了解有限,我从phpmyadmin的GUI创建表和数据库,而不是使用代码 将添加的表单输入到数据库中的代码Php 如何修复';外键约束失败';在mysql中,php,mysql,Php,Mysql,我在PHP中设置了一个简单的CRUD,我在phpmyadmin中创建了两个表,一个用于个人信息(姓名、姓氏、电子邮件、电话),另一个用于其他电话号码。我在设置外键以连接两个表时遇到问题。额外的电话号码是在jQuery的帮助下从用户处动态添加的(可以调用或不调用,取决于用户是否有两个电话号码)。 有人能指出我犯错误的地方吗。 我对PHP的了解有限,我从phpmyadmin的GUI创建表和数据库,而不是使用代码 将添加的表单输入到数据库中的代码 // Checks if the submit but
// Checks if the submit button has been pressed, setst the variable values of the name values from the form
if (isset($_POST['submit'])){
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$phone_number = $_POST['phone_number'];
$mysqli->query("INSERT INTO personal (first_name, last_name, email, phone_number) VALUES('$first_name', '$last_name', '$email', '$phone_number')")
OR die($mysqli->error);
}
直到我输入外键时,它才起作用,输入外键后,我会得到错误。
无法添加或更新子行:外键约束失败(
exercise
phone
,约束phone\u ibfk\u 1
外键(user\u id
)引用personal
(user\u id
)使用$mysqli->insert\u id
获取在上一次查询中添加的用户的id,并将其用作电话
表中的外键
if (isset($_POST['submit'])){
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$phone_number = $_POST['phone_number'];
$mysqli->query("INSERT INTO personal (first_name, last_name, email, phone_number) VALUES('$first_name', '$last_name', '$email', '$phone_number')")
OR die($mysqli->error);
$userid = $mysqli->insert_id;
// Checks if the Add more numbers button has been pressed
if (isset($_POST['phone_number2'])) {
$phone_number2 = $_POST['phone_number2'];
// foreach statement to loop trought the array of inserted additional phone numbers
foreach ($phone_number2 as $key => $value) {
$mysqli->query("INSERT INTO phone (userid, phone_number2) VALUES($userid, '$value')")
OR die($mysqli->error);
}
}
}
使用
$mysqli->insert_id
获取在上一次查询中添加的用户的id,并将其用作phone
表中的外键
if (isset($_POST['submit'])){
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$phone_number = $_POST['phone_number'];
$mysqli->query("INSERT INTO personal (first_name, last_name, email, phone_number) VALUES('$first_name', '$last_name', '$email', '$phone_number')")
OR die($mysqli->error);
$userid = $mysqli->insert_id;
// Checks if the Add more numbers button has been pressed
if (isset($_POST['phone_number2'])) {
$phone_number2 = $_POST['phone_number2'];
// foreach statement to loop trought the array of inserted additional phone numbers
foreach ($phone_number2 as $key => $value) {
$mysqli->query("INSERT INTO phone (userid, phone_number2) VALUES($userid, '$value')")
OR die($mysqli->error);
}
}
}
警告:当使用
mysqli
时,您应该使用和向查询中添加任何数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。您的手机
表有一个用户id
字段,该字段必须引用个人
表中的用户id
;当你在插入到phone
表中时,它不会神奇地知道使用哪一个。你需要将phone
中的键字段设置为personal
first_name:=Robert')中使用的键;落桌学生--
@spencer7593幸运的是,他没有调用$mysqli->multi_query()
,因此不会删除任何内容。警告:在使用mysqli
时,您应该使用和向查询中添加任何数据。不要使用字符串插值或串联来完成此操作,因为您已经创建了严重的错误。切勿将$\u POST
、$\u GET
或任何类型的数据直接放入查询中,如果有人试图利用您的错误,这可能是非常有害的。您的手机
表有一个用户id
字段,该字段必须引用个人
表中的用户id
;当你在插入到phone
表中时,它不会神奇地知道使用哪一个。你需要将phone
中的键字段设置为personal
first_name:=Robert')中使用的键;落桌学生--
@spencer7593幸运的是,他没有调用$mysqli->multi_query()
,所以不会删除任何内容。