この PHP コード (ユーザー名が である行を削除するための mysql_query $phpVar
) が何もしないのはなぜですか?
mysql_query("DELETE FROM xraydeath WHERE user = $user");
$user
パラメータもクォートするのを忘れたためか、 SQL クエリ文字列に入る変数をエスケープしてください。そのパラメーターがユーザー入力に直接接続されている場合、誰かが送信' or 1=1 --
してテーブル全体がなくなる可能性があります。このアイデアは、SQL インジェクションとして知られています。
注:古い mysql_* 関数は非推奨になりました。使用を避ける必要があります。代替方法を参照してください。
次のように文字列を引用符で囲む必要があります。
mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
ユーザーの周りの引用符を忘れました:
mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
何を期待していますか?どのように失敗しますか?Mysql_query は、クエリをサーバーに送信することを除いて、使用している形式で何もしないと想定されています。
$result = mysql_query (...);
// use the result if any.
if (!$result) {
die('Invalid query: ' . mysql_error());
}
// check the error that you might have
$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 への切り替えを使用しないようにしてください。
が文字型であると仮定するxraydeath.user
と、値を引用符で囲む必要があります。$user
まだ引用符が含まれていない場合は、次を試してください。
mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
そしてキックのために、設定してみてください$user = "' OR '1'='1";
!(SQL インジェクション攻撃についてよく読んで、本当に mysqli に切り替える必要があります!)
テーブルに一致する行がない可能性もあるため、何も削除されません。自分が割り当てたものとデータを知らなければ、知る$user
方法はありません。
これを試してください:
mysql_query("DELETE FROM xraydeath WHERE user = '".$user."'");
また
mysql_query("DELETE FROM xraydeath WHERE user = '".$user."';");
mysql で使用されるすべての php 変数は、'".$variable."' に入れます。
最初 : 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."'");
それが役に立てば幸い