为什么即使应该更新一条记录,mysql_affected_rows也会返回0

时间:2009-12-21 15:15:23

标签: php sql mysql database

mysql_query("update users set balance=balance+'$pwbalance'-'$totalprice' where memberid='$memberid' and (balance+'$pwbalance'-'$totalprice')>=0")or die(mysql_error());
$count=mysql_affected_rows();

当我回应$ pwbalance时,它是40.00; 当我回应$ totalprice时,它是40; 所以应该有一条记录需要更新。但是,当我回显$ count时,我得到0.出了什么问题?

2 个答案:

答案 0 :(得分:7)

如果在updat之前和之后会有明显的差异,MySQL实际上只会更新一行。你的计算基本上是:

SET balance = balance + 40 - 40

所以没有任何改变,MySQL不会将其视为受影响的行。

附注:不要在sql中单引号数值。单引号充当字符串分隔符。对于mysql,在这种情况下,它们会自动转换为数字,但无论如何都是不好的做法。

答案 1 :(得分:0)

Roland是对的,显然你想知道查询是否成功,余额保持不变的事实对你来说并不重要。您可能希望添加一个新的字段,例如您在此更新中增加的purchase_count,或者last_purchase_date,以触发实际更新。