所以,澄清事情:我知道为什么会失败。
问题是:如何解决这个问题?
这是我的设置:
引用表是用户,引用列是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
答案 0 :(得分:1)
您正在错误的表格上设置外键。
您必须在表id
的字段user_data
上设置外键,引用表id
上提交的users
现在您尝试在表users
中插入数据,但是,id
应该出现在表user_data
中(因为表中有外键) user
引用表user_data
),它会给出错误