我正在用PHP设置一个简单的CRUD,我在phpmyadmin中创建了两个表,一个表用于个人信息(姓名,姓氏,电子邮件,电话),另一个表用于其他电话号码。我在设置外键来连接两个表时遇到问题。附加电话号码是在jQuery的帮助下从用户动态添加的(可以根据用户是否拥有两个电话号码来调用该附加电话号码)。 有人可以指出我们在哪里犯错。 我对PHP的了解有限,我从phpmyadmin的GUI创建表和数据库,而没有使用代码。
用于在数据库中输入添加的表单的代码。
// 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);
}
// 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 (phone_number2) VALUES('$value')")
OR die($mysqli->error);
}
}
直到我输入外键为止,它一直有效,输入后我得到了错误。
无法添加或更新子行:外键约束失败(exercise
。phone
,CONSTRAINT phone_ibfk_1
外部键(user_id
)参考personal
({{ 1}}))
答案 0 :(得分:0)
使用$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);
}
}
}