为什么这个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。第二:用户是什么类型的?if为int:(面向对象风格)
mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` = '".$user."'");
if是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."'");
希望它能帮助