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

Ste*_*ven 0 php mysql sql 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();
Run Code Online (Sandbox Code Playgroud)

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

Rol*_*man 7

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

SET balance = balance + 40 - 40
Run Code Online (Sandbox Code Playgroud)

所以什么都没有改变,MySQL不会把它算作一个有影响的行.

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