mysql查询不工作没有错误ot什么

时间:2011-05-31 17:01:35

标签: php mysql phpmyadmin

      $result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'")
or die(mysql_error());

但不更新。选中$battle_get['username'],用户名就在那里。 我没有收到任何错误或任何不添加...

提前感谢任何帮助都非常好

6 个答案:

答案 0 :(得分:4)

查看mysql_affected_rows()的结果:

if ( ! $result53543534 = mysql_query( "UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'") ) {
    die( mysql_error() );
} else {
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>";
}

我可能没有完全正确的语法,但我希望你能得到这个想法。如果结果为0,则表示您未指定WHERE语法,以便它实际引用任何行。

如果结果大于0,那么如果您认为它没有影响任何行,那就错了。它可能不会影响您认为应该排的行,但这是另一个问题。

另外,echo你的sql语句,这样你就可以真正看到它正在做什么。

答案 1 :(得分:0)

尝试测试

$email = $battle_get['username'];
UPDATE users SET credit=credit+1 WHERE email= '$email'

答案 2 :(得分:0)

您忘了将查询提交到数据库,尝试事务

mysql_query("START TRANSACTION");
mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'");
mysql_query("COMMIT");

答案 3 :(得分:0)

我建议将代码更改为如下,它将允许您检查sql查询。尝试测试sql查询以查看它是否运行。您可能还想在mysql控制台上运行DESCRIBE用户,以查看您获得的信息类型。

$sql = "UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'"
echo $sql;
if ( ! $result53543534 = mysql_query($sql) ) {
    die( mysql_error() );
} else {
    echo "Number of rows affected: " . mysql_affected_rows() . "<br>";
}

答案 4 :(得分:0)

为您正在使用的连接中的用户授予UPDATE权限。仅仅因为用户能够SELECT和INSERT,并不意味着它们也可以自动更新,您需要明确授予他们UPDATE的权限。并且mysql_error()也不会显示任何错误,因为您的SQL语句是正确的,因此没有显示错误。

答案 5 :(得分:0)

发生同样的事情,我首先要做的是在MySQL Workbench上重现它,然后从那里使用SQL语句,我发现(不确定为什么)它可以在WHERE子句后面加上括号:

UPDATE users SET credit = credit + 1 WHERE (`email`= '{$battle_get['username']}')