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));

エラーはありませんが、エントリは「users」という名前のテーブルに追加されません。

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を確認しました。ここで予約されている単語は「キー」だけです。

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

この行を追加して、pdoクエリエラーを取得します

于 2012-10-27T10:05:50.263 に答える