繁体   English   中英

如何修复MySQL中的“外键约束失败”

[英]How to fix a 'foreign key constraint fails' in mysql

我在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);
}
}

直到我输入外键为止,在输入后我得到了错误。 不能添加或更新子行,外键约束失败( exercisephone ,约束phone_ibfk_1外键( user_id )参考personaluser_id ))

使用$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);
        }
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM