MySQL外键约束失败

时间:2015-06-14 10:46:18

标签: php mysql pdo foreign-keys sql-insert

所以,澄清事情:我知道为什么会失败。
问题是:如何解决这个问题? 这是我的设置:
enter image description here
引用表是用户,引用列是id,引用的表是user_data,引用的列是id。 我想将电子邮件,用户名,盐和密码存储在一个表中,但用户数据如登录令牌等存储在另一个表中。我认为这是正确的做法。显然我错过了一些东西。

哦,我正在使用PHP和PDO。

function registerUser($email, $username, $password)
{
    global $db;
    try {
        $prep = $db->prepare("INSERT INTO users (email, username, salt, password) VALUES(':email', ':username', ':salt', ':password')");
        $salt = "abcd";
        $prep->bindParam(':email', $email);
        $prep->bindParam(':username', $username);
        $prep->bindParam(':salt', $salt);
        $prep->bindParam(':password', $password);
        $prep->execute();
        echo "Success";
    } catch (PDOException $e) {
        die("Query failed: " . $e->getMessage());
    }
}

编辑:忘记错误...... Query failed: SQLSTATE[23000]: Integrity constraint violation: 1452 Cannot add or update a child row: a foreign key constraint fails ( {infokup2016 {1}} {用户{1}}的数据. ID为, CONSTRAINT的user_data FOREIGN KEY ( ID为) REFERENCES

1 个答案:

答案 0 :(得分:1)

您正在错误的表格上设置外键。

您必须在表id的字段user_data上设置外键,引用表id上提交的users

现在您尝试在表users中插入数据,但是,id应该出现在表user_data中(因为表中有外键) user引用表user_data),它会给出错误