0

我有一个查询得到这些变量(但来自 POST 表单):

$username = "John";
$email = "johnsmith@mail.com";
$passwordEnc = "9d4e1e23bd5b727046a9e3b4b7db57bd8d6ee684";
$activated = 0;
$activationKey = "5753a498f025464d72e088a9d5d6e872592d5f91";

查询如下:

$stmt = $dbu->prepare("INSERT INTO users (username, email, password, activated, key) VALUES (?, ?, ?, ?, ?)");
$stmt->execute(array($username, $email, $passwordEnc, $activated, $activationKey));

没有错误,但该条目未添加到名为“用户”的表中。

4

3 回答 3

6

您需要在 MySQL 中转义保留字,password例如使用key反引号

INSERT INTO users (username, email, `password`, activated, `key`) VALUES ...
于 2012-10-27T10:04:03.103 回答
2

我检查了http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html,只是为了节省你一些时间'Key'是唯一保留在那里的词。

于 2012-10-27T10:15:55.820 回答
0
$dbu->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbu->errorInfo();

添加此行以获取任何 pdo 查询错误

于 2012-10-27T10:05:50.263 回答