【发布时间】:2015-06-14 10:46:17
【问题描述】:
所以,澄清一下:我知道为什么会失败。
问题是:如何解决这个问题?
这是我的设置:
引用表是users,引用列是id,被引用表是user_data,被引用列是id。
我想将电子邮件、用户名、盐和密码存储在一个表中,但将登录令牌等用户数据存储在另一个表中。我认为这是正确的方法。显然我错过了什么。
哦,我正在使用带有 PDO 的 PHP。
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.users, CONSTRAINTdataFOREIGN KEY (id) REFERENCESuser_data(id) ON DELETE NO ACTION ON UPDATE NO ACTION)
【问题讨论】:
-
你得到的确切错误是什么?
-
它是怎么失败的?您需要向我们提供您收到的错误消息,以及预期结果与实际结果。
-
也许您将外键设置为“错误的方向”?您应该在 user_data 表上设置外键,引用表 users 而不是相反
-
我想要这样当我选择 users 表时,我可以得到 user_data 的内容
标签: php mysql pdo foreign-keys sql-insert