2009-12-21 130 views
0
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; 當我回聲$總價格,它是40; 所以應該有一條記錄被更新。但是,當我回顯$ count時,我得到0.出什麼問題了?爲什麼mysql_affected_rows返回0即使應該更新一個記錄

回答

7

如果updat之前和之後會有明顯差異,MySQL只會實際更新一行。你的計算基本上是:

SET balance = balance + 40 - 40 

所以沒有什麼變化,MySQL不會把它算作受影響的行。

注意:不要在sql中使用單引號數值。單引號作爲字符串分隔符。對於mysql,在這種情況下,它們會自動轉換爲數字,但無論如何這是不好的做法。

+1

我同意羅蘭布曼;如果'$ pwbalance'包含在查詢中用作整數的值,則不要使用引號。 – kiamlaluno 2009-12-21 15:29:03

0

羅蘭德是對的,顯然你想知道如果查詢是成功的,平衡保持不變的事實對你來說並不重要。您可能需要添加一個新字段,如您在此更新中增加的purchase_count或last_purchase_date,以觸發實際更新。

相關問題