0
私の更新クエリが変数$ idで動作しませんが、例えばリテラル番号29を使用すると動作します。私は$ idをvar_dumpedしてINT(29)を取得します。私は過去に働いたコードをコピーしたので、最近何か変わったのですか?作品
$id = (ISSET($_GET['id'])) ? intval($_GET['id']):0;//prevents sql inject
var_dump($id);
私のクエリは以下の通りです:
$sqlUpdate = $db->query("UPDATE sites SET site_name='$site_name',population='$population' WHERE id=29");
このクエリは動作しません:
$sqlUpdate = $db->query("UPDATE sites SET site_name='$site_name',population='$population' WHERE id=$id");
文字列でSQLインジェクションを防止する方法はありますか?変数を使用してクエリを出力し、それが期待どおりであることを確認します。 – chris85
他の変数のSQLインジェクションを防ぐためにmysqli_real_escape_stringを使用しています。あなたが出力によって何を意味するかはわかりませんが、私はすべての変数のvar_dumpを行っており、クエリはTRUEを返します。 intval($ id)はidフィールドに格納されているものと同じではないようです。 – Leslie
UPDATEサイトを保存していますSET site_name = '$ site_name'、population = '$ population' WHERE id = $ id "in変数は実行前にそれを出力します。パラメータ化されたクエリを使用する方が良い方法でしょう。 – chris85