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:51.043 回答
1

您需要在字符串周围加上引号,如下所示:

mysql_query("DELETE FROM xraydeath WHERE user = '$user'");
于 2012-07-30T06:42:47.547 回答
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。第二:用户是什么样的类型?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 回答