2

私はそれにまっすぐ飛び込みます。PHPを使用して、変数を値として使用すると、データベースからレコードを削除する際に問題が発生します。以下のコード行は完全に機能します

mysqli_query($con,"DELETE FROM highScores WHERE Name='David'");

ただし、ユーザーの名前は変更されるため、変数として宣言する必要があります。あらゆる種類のバリエーションを試しましたが、何もうまくいかないようです。私の最近の失敗した試みは、以下のコードでした。これは、挿入時に変数を宣言する方法です。

mysqli_query($con,"DELETE FROM highScores WHERE Name='{$name}'");
4

4 に答える 4

3

このような状況では、変数に期待するものが実際に含まれているかどうかを確認することをお勧めします。また、クエリ文字列全体をエコーすることは、クエリが機能しない理由を見つける良い方法であることもわかりました。

$sqlquery = "DELETE FROM highScores WHERE Name='{$name}'";

// have a look at the query...

echo "<pre>$sqlquery</pre>";

// use it...

mysqli_query($conn,$sqlquery);

$name がどこか信頼されていない場所 (公開されている HTML フォームなど) からのものである場合は、クエリで使用する前に「安全」にする必要があることに注意してください。「準備済みステートメント」を調べてください。コードが変数に正しく入力されていることがわかったら、クエリに入れる前に安全であることを確認してください。

于 2013-06-22T20:20:12.417 に答える
0

{$variable} がクエリで有効かどうかはわかりません。

クエリに変数を挿入する方法は、集中と呼ばれます。

mysqli_query($con,"DELETE FROM highScores WHERE Name='" . $name . "'");

ピリオドは 2 つの文字列を一緒に追加します。

ただし、実行しようとしているのは、SQL インジェクションに対して脆弱です。私があなたなら、$name の中身に注意を払うでしょう。

編集:私の間違いです。引用符を挿入するクラスに慣れています。

于 2013-06-22T20:11:31.063 に答える
0

同じ問題の解決策を探しているときにここにたどり着きましたが、データベース ユーザーに削除権限がないことがわかりました。セキュリティ上の理由から、以前にこの特権を削除しました。

于 2014-11-23T00:33:46.993 に答える