PHPクエリ更新データ
P粉938936304
P粉938936304 2024-04-01 13:41:23
0
1
500

これは私が受け取ったエラーです:

UPDATE QUESTION SET situacao='Concluido' WHERE id=? SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 SQL 構文にエラーがあります。MariaDB サーバーのバージョンに対応するマニュアルを確認して、何が起こるかを確認してください。 「? 近くで使用する正しい構文」が 1 行目

にある場合

いろいろ試しましたが、最終的には次のコードしか使えませんでした。ありがとうございます

P粉938936304
P粉938936304

全員に返信(1)
P粉132730839

答えはもうすぐ出ます。 Slava Rozhnev 氏が指摘したように、コードは SQL インジェクションの可能性があります。あなたの質問では、クエリでプレースホルダーを使用しています。ステートメントを準備するときは、PDO に次のように指示します。 ステートメントに何を入力しても、実行しないでください。それは単なるデータです 。準備ができたら、値をプレースホルダーにバインドできます。これは、bindValue または bindParam を介して、または execute()

を使用して行うこともできます。 リーリー

$stmt->bindValue(1, $id)現在の値を読み取り、プレースホルダーをその値に置き換えます。ループを使用する場合で、$id が変化し続ける場合は、$stmt-bindParam(1, $id) を使用できます。これにより、$id が読み取られます。クエリを実行するときの変数。別のオプションは、bindValue 呼び出しを削除し、execute に値をバインドさせることです。これは、値の配列をパラメータとして execute 呼び出しに追加することで実行できます。あなたの場合、これは $stmt->execute([$id]) になります。個人的には、これを行うことを好みます。実行する前に、bindValue 呼び出しを大量に追加するよりもはるかにクリーンだからです。

また、$sql 変数の割り当てを try-catch ブロックの外に移動したことにも注意してください。これは、PDO のコンストラクターが PDOException をスローした場合にキャッチで変数を使用するためです (行 $link = new PDO("mysql:host=$servername;dbname= $dbname", $username, $password);

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート