$result53543534 = mysql_query("UPDATE users SET credit=credit+1 WHERE email= '{$battle_get['username']}'")
or die(mysql_error());
但不更新。选中$battle_get['username']
,用户名就在那里。
我没有收到任何错误或任何不添加...
提前感谢任何帮助都非常好
答案 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']}')