Php 为什么mysql_受影响的_行即使有一条记录需要更新也返回0

Php 为什么mysql_受影响的_行即使有一条记录需要更新也返回0,php,sql,mysql,database,Php,Sql,Mysql,Database,当我回显$pwbalance时,它是40.00; 当我回显$totalprice时,它是40; 所以应该有一条记录需要更新。但是,当我回显$count时,得到0。怎么了?MySQL只在更新前后有明显差异的情况下才实际更新一行。你的计算基本上是: mysql_query("update users set balance=balance+'$pwbalance'-'$totalprice' where memberid='$memberid' and (balance+'$pwbalance'-'

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

MySQL只在更新前后有明显差异的情况下才实际更新一行。你的计算基本上是:

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();
所以没有任何变化,MySQL不会将其视为受影响的行


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

罗兰是对的,显然你想知道查询是否成功,余额保持不变的事实对你来说并不重要。您可能需要添加一个新字段,如在本次更新中增加的“购买数量”或“上次购买日期”,以触发实际更新。

我同意罗兰·鲍曼的观点;如果$pwbalance包含一个在查询中用作整数的值,则不要使用引号。
SET balance = balance + 40 - 40