PHP MySQL删除值等于
我有一个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。为什
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注入的影响。