为什么这个PHP代码(mysql_query删除用户名为$phpVar
的行)什么都不做?
mysql_query("DELETE FROM xraydeath WHERE user = $user");
答案 0 :(得分:3)
可能是因为您忘了引用$user
参数,请escape variables进入sql查询字符串。如果该参数直接连接到用户输入,则有人可能会提交' or 1=1 --
并且您的整个表格都已消失。这个想法被称为sql injection。
注意:旧的mysql_ *函数现已弃用,您应该避免使用它们see the alternatives。
答案 1 :(得分:1)
你需要在这样的字符串周围加上引号:
mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
答案 2 :(得分:1)
您忘记了用户周围的引号:
mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
答案 3 :(得分: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
答案 4 :(得分: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。
答案 5 :(得分:0)
假设xraydeath.user
是字符类型,则需要将值括在引号中。如果$user
尚未包含引号,请尝试:
mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
对于踢球,请尝试设置$user = "' OR '1'='1";
! (阅读SQL注入攻击,你应该切换到mysqli!)
表也可能没有匹配的行,因此不会删除任何内容。如果不知道您分配给$user
的内容和数据,就无法知道。
答案 6 :(得分:0)
试试这个:
mysql_query("DELETE FROM xraydeath WHERE user = '".$user."'");
或
mysql_query("DELETE FROM xraydeath WHERE user = '".$user."';");
在mysql中使用的每个php变量,将它们放入'“。$ variable。”'
答案 7 :(得分:-1)
首先:不推荐使用mysql。你应该使用mysqli。 第二:用户是什么类型的? if是int: (面向对象的风格)
mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` = '".$user."'");
如果是varchar(string):
mysqli::query("DELETE (what you want) FROM xraydeath WHERE `user` LIKE '".$user."'");
或 (procedurel syle)
mysqli_query((your mysqli link), "DELETE (what you want) FROM xraydeath WHERE `user` LIKE/= '".$user."'");
希望有所帮助