0

この PHP コード (ユーザー名が である行を削除するための mysql_query $phpVar) が何もしないのはなぜですか?

mysql_query("DELETE FROM xraydeath WHERE user = $user");
4

8 に答える 8

3

$userパラメータもクォートするのを忘れたためか、 SQL クエリ文字列に入る変数をエスケープしてください。そのパラメーターがユーザー入力に直接接続されている場合、誰かが送信' or 1=1 --してテーブル全体がなくなる可能性があります。このアイデアは、SQL インジェクションとして知られています。

注:古い mysql_* 関数は非推奨になりました。使用を避ける必要があります。代替方法を参照してください

于 2012-07-30T06:45:36.660 に答える
1

次のように文字列を引用符で囲む必要があります。

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
于 2012-07-30T06:42:47.547 に答える
1

ユーザーの周りの引用符を忘れました:

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
于 2012-07-30T06:42:51.043 に答える
0

何を期待していますか?どのように失敗しますか?Mysql_query は、クエリをサーバーに送信することを除いて、使用している形式で何もしないと想定されています。

 $result = mysql_query (...);
 // use the result if any.
 if (!$result) {
    die('Invalid query: ' . mysql_error());
 }
 // check the error that you might have
于 2012-07-30T06:45:33.273 に答える
0

$user引用符で囲む必要があります

mysql_query("DELETE FROM xraydeath WHERE user = '".$user."';");

また、削除された行がなくても DELETE は成功するため、実際に削除された行の数を取得するには、mysql_affected_rows()

$x = mysql_query("..");
echo "There were ".mysql_affected_rows()." rows affected";

**mysql_*代わりに PDO への切り替えを使用しないようにしてください。

于 2012-07-30T06:46:11.507 に答える
0

が文字型であると仮定するxraydeath.userと、値を引用符で囲む必要があります。$userまだ引用符が含まれていない場合は、次を試してください。

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");

そしてキックのために、設定してみてください$user = "' OR '1'='1";!(SQL インジェクション攻撃についてよく読んで、本当に mysqli に切り替える必要があります!)


テーブルに一致する行がない可能性もあるため、何も削除されません。自分が割り当てたものとデータを知らなければ、知る$user方法はありません。

于 2012-07-30T06:46:58.433 に答える
0

これを試してください:

mysql_query("DELETE FROM xraydeath WHERE user = '".$user."'");

また

mysql_query("DELETE FROM xraydeath WHERE user = '".$user."';");

mysql で使用されるすべての php 変数は、'".$variable."' に入れます。

于 2012-07-30T06:47:51.327 に答える
-1

最初 : mysql は非推奨です。mysqli を使用する必要があります。2 : ユーザーとはどのようなタイプですか? if is int : (オブジェクト指向スタイル)

mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` = '".$user."'");

varchar (文字列) の場合:

mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` LIKE '".$user."'");

または(手続き型)

mysqli_query((your mysqli link), "DELETE (what you want) FROM xraydeath WHERE `user` LIKE/= '".$user."'");

それが役に立てば幸い

于 2012-07-30T06:55:26.210 に答える