0

シナリオは次のとおりです。Webサイトにログインする特定のユーザーのデータベースに保存されている値(現在の値に1を加算)を更新するメカニズムが必要です。これは現在のコードです:

$value = $row["value"];
$add_value = $db->prepare('UPDATE table SET value = $value + 1 WHERE email = :email');
$add_value->execute(array(':email'   => $email));

しかし、私が受け取るのは、次のエラーメッセージです。 解析エラー:構文エラー、予期しないT_LNUMBERin..。

私は何が間違っているのですか?

4

1 に答える 1

1

まず、単一引用符を使用しています。これは、変数が解析されないことを意味します。$value(クエリは実際の値ではなく文字通り見ています)。

次に、事前に値を知る必要はありません。次のようにするとうまくいきます。

$add_value = $db->prepare('UPDATE `table` SET `value` = `value` + 1 WHERE `email` = :email');
$add_value->execute(array(':email'   => $email));

データベース エンジンは、フィールドを適切に更新することを認識しています。

于 2012-08-10T22:13:51.277 に答える