私のデータベース内の一部のレコードを更新しようとしていますが、このコードは以前は動作していましたが、もはや動作していません。 id変数を固定数に変更した後も、コードは引き続きデータベースに影響しません。エラーは発生していません。UPDATEはレコードにまったく影響しません
<?php
header('Access-Control-Allow-Origin: *');
error_reporting(E_ALL);
ini_set("display_errors", 1);
$db = new PDO('mysql:host=localhost;dbname=xxx;charset=utf8', 'xxx', 'xxx');
$party = ($_POST['party']);
$id = ($_POST['id']); // $id is a string with ids separated by commas (1,2,3,4 e.t.c.)
$state = ($_POST['state']); // $state is either 1 or 0.
$code = ($_POST['fetchCode']);
$stmt = $db->prepare("UPDATE wishes SET state = $state WHERE fetchCode = '$code' AND partyID = '$party' AND id IN ($id); ");
$stmt->execute();
echo json_encode("Done");
?>
私は唯一の状態列を更新する権限を持っているデータベース接続のために使用しているユーザー、それゆえ私は、SQLインジェクションのリスクが表示されません。私はこれについて正しいのでしょうか、私のコードに何が間違っていますか?あなたの質問の後半部分については
[警告リトルボビーテーブル] –
考慮OPはSQLインジェクションは依然として問題であるかどうかを尋ねます制限付きのアクセス許可では完全に役に立たないコメントです... –
'prepared'プリペアドステートメントを使用すると、クエリ文字列内にいくつかのプレースホルダがあり、準備が整った後に' bindParam'が表示されます。 – Alex