Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP MySQL删除值等于_Php_Mysql - Fatal编程技术网

PHP MySQL删除值等于

PHP MySQL删除值等于,php,mysql,Php,Mysql,我有一个PHP聊天脚本,当用户注销从数据库中删除MySQL数据库时,它会调用该数据库 我的剧本是: if(isset($_GET['logout'])){ mysql_query("DELETE FROM users WHERE username='" .$user['username']. "' AND rank='0'"); header("Location: login_mini.php?logout=1"); } 我想做的是删除用户,如果他们离开时排名为0。为什

我有一个PHP聊天脚本,当用户注销从数据库中删除MySQL数据库时,它会调用该数据库

我的剧本是:

  if(isset($_GET['logout'])){
    mysql_query("DELETE FROM users WHERE username='" .$user['username']. "' AND rank='0'");
    header("Location: login_mini.php?logout=1");
  }

我想做的是删除用户,如果他们离开时排名为0。为什么这个脚本不工作?

MYSQL删除示例的语法:

DELETE FROM somelog WHERE user = 'jcole'
ORDER BY timestamp_column LIMIT 1;
所以您的查询是错误的,这就是它不运行的原因:

应该是

//without * and add quotes in your $user['username']
    mysql_query("DELETE FROM users WHERE username=" .$user['username']. " AND rank='0'");

MYSQL Delete的语法示例:

DELETE FROM somelog WHERE user = 'jcole'
ORDER BY timestamp_column LIMIT 1;
所以您的查询是错误的,这就是它不运行的原因:

应该是

//without * and add quotes in your $user['username']
    mysql_query("DELETE FROM users WHERE username=" .$user['username']. " AND rank='0'");

DELETE不接受列参数


删除*

删除不接受列参数

mysql_query("DELETE FROM users WHERE username='$user[username]' AND rank=0");
移除*

mysql_query("DELETE FROM users WHERE username='$user[username]' AND rank=0");
删除操作中没有*或任何列,因为您正在删除整行


删除操作中没有*或任何列,因为您正在删除整行。

您确定users表中的记录的秩==0吗? 核对一下

SELECT COUNT(*)
FROM users
WHERE rank='0'
然后如果有,检查变量$user['username']是否有值

var_dump($user);
然后,如果两者都有值,那么尝试在mysql上手动执行

SELECT *
FROM users
WHERE username = #the value of the username
    AND rank = '0'
如果有结果,那么可能您的PHP在执行mysql_查询时抛出了一个错误。尝试在mysql\u查询之后插入此代码

if (mysql_error()) {
    die(mysql_error());
}

您确定users表中有一个rank==0的记录吗? 核对一下

SELECT COUNT(*)
FROM users
WHERE rank='0'
然后如果有,检查变量$user['username']是否有值

var_dump($user);
然后,如果两者都有值,那么尝试在mysql上手动执行

SELECT *
FROM users
WHERE username = #the value of the username
    AND rank = '0'
如果有结果,那么可能您的PHP在执行mysql_查询时抛出了一个错误。尝试在mysql\u查询之后插入此代码

if (mysql_error()) {
    die(mysql_error());
}


回显您的查询,然后尝试直接将查询输入MySQL。如果您试图引用数组中的值,则应为
username='{$user['username']}'
。请注意键周围的花括号和引号。请注意SQL注入,任何答案都是如此far@user2036031真正地您是否尝试过在phpmyadmin中运行查询?只需从username='myusername'和rank='0'所在的用户运行
DELETE*
即可,通过使用外部变量构建SQL语句,您将面临SQL注入攻击。此外,任何带有单引号的输入数据,如“O'Malley”的名称,都会破坏您的SQL查询。请了解如何使用参数化查询(最好是PDO模块)来保护您的web应用程序。有一些示例可以帮助您入门,并且有许多详细的示例。回显您的查询,然后尝试直接将查询输入MySQL。如果您试图引用数组中的值,则应为
username={$user['username']}
。请注意键周围的花括号和引号。请注意SQL注入,任何答案都是如此far@user2036031真正地您是否尝试过在phpmyadmin中运行查询?只需从username='myusername'和rank='0'所在的用户运行
DELETE*
即可,通过使用外部变量构建SQL语句,您将面临SQL注入攻击。此外,任何带有单引号的输入数据,如“O'Malley”的名称,都会破坏您的SQL查询。请了解如何使用参数化查询(最好是PDO模块)来保护您的web应用程序。有一些例子可以帮助您入门,并且有很多详细的例子。+1这主要是对所有注释的合并,但也是唯一完整正确的答案。@user2036031,您尝试过在mysql中运行查询吗?如果它没有运行,那么我的建议是把剩下的代码放进去。让它
echo
查询:
“从username='”的用户中删除$user['username']。“'AND rank='0'”
。直接连接到数据库并粘贴该字符串。发生了什么?另外,@DrixsonOseña,看起来您在编辑时从查询中删除了单引号-这些引号应该在那里,因为列可能是varchar或其他字符串类型。@user2036031-
echo“DELETE from username=”。$user['username']。“'AND rank='0'”
打印
1
?+1这主要是所有注释的合并,但也是唯一完整正确的答案。@user2036031,您尝试过在mysql中运行查询吗?如果它没有运行,那么我的建议是把剩下的代码放进去。让它
echo
查询:
“从username='”的用户中删除$user['username']。“'AND rank='0'”
。直接连接到数据库并粘贴该字符串。发生了什么?另外,@DrixsonOseña,看起来您在编辑时从查询中删除了单引号-这些引号应该在那里,因为列可能是varchar或其他字符串类型。@user2036031-
echo“DELETE from username=”。$user['username']。“'AND rank='0'”
打印
1
?出于安全原因,将您的$user['username']与mysql\u real\u escape()一起附上。这是为了保护您的查询不受SQL注入的影响。顺便说一句,出于安全原因,您的$user['username']中包含了mysql\u real\u escape()。这是为了保护您的查询不受SQL注入的影响。