0

ステートメントが true になるたびに、データベースのフィールドを 1 で更新しようとしています。これを行う方法がわかりません。私の次のコードでは、この問題についてよくわかりません(ただし、多くのグーグル検索があります):

  1. 既存のフィールド値に 1 を追加する方法 (投票 = 投票 + 1)
  2. bindParam と組み合わせた where ステートメント。

動作しませんが、エラー メッセージは表示されません。私は何を間違っていますか?

私のコードは次のようになります ($id 変数は正しく、これを出力し、「正しい」値を持っています。$dbh も正しい接続で設定されています):

        $stmt = $dbh->prepare("UPDATE rating SET vote = vote+1 WHERE rel_id_product = ':id'");
        $stmt->bindParam(':id', $id, PDO::PARAM_STR);
        $stmt->execute();
4

1 に答える 1

1

プレースホルダーを引用しないでください。クエリで使用している値を「挿入」するときに、必要に応じて PDO がそれを行います。

... WHERE rel_id_product = :id
                           ^^^--- no quotes

また、実行してvar_dump($stmt->execute)、何が得られるかを確認してください。ブール値の false の場合、クエリは失敗しています。また、準備呼び出しが成功したと仮定して、関係なく実行しようとしています。DB 操作が成功したと想定しないでください。SQL 構文が完璧であっても、それをチェックしないために事態が悪化する理由は他にもたくさんあります。

于 2012-05-06T20:40:32.393 に答える