2014-06-14 109 views
-1

在while循環不正確總結

$dt = mysql_query("SELECT * FROM `member_territory` mt LEFT JOIN `drug_territory` dt ON mt.mt_ter = dt.t_id"); 

while($t = mysql_fetch_array($dt)) { 

    $total +=($t['t_reward']* $t['mt_lev'])*150; 

    mysql_query("UPDATE `members` SET 
       `drug_income` = '".$total."', 
       `drug_incometotal` = `drug_incometotal` + '".$total."', 
       `wallet` = `wallet` + '".$total."' 
       WHERE `playerid` = '".$t['mt_playerid']."'"); 

    } 

因此,這裏是我的代碼在插入drug_income這是正確的,但是當以往任何時候都插入drug_incometotalwallet其不正確,而自explainingtary $總。

我不知道爲什麼,我已經嘗試了一切,以我的知識拉我的頭!

任何想法爲什麼我得到這個不正確的結果(因爲我說drug_income是正確的)只有當我嘗試'+'它的數據庫中的東西它返回一個不正確的結果。

+1

聽起來像一個不錯,友好的遊戲 – Strawberry

+0

什麼部分的代碼是不正確的.. :)似乎很好,因爲它的一部分插入正確,但其餘的沒有。 – user3740302

+0

對我來說似乎代碼工作正常,但你的算法是錯誤的。你確定你想每次都增加'$ total'變量來增加'drug_incometotal',或者你是否想在循環之後只增加一次? –

回答

1

我不想在循環之後只有一次增加... - user3740302 1分鐘前

那好吧。所以你應該把你的UPDATE查詢移到循環之外,對吧?

+0

如果我將它從while循環中刪除,它根本不會更新:/ – user3740302

+0

這將是因爲您正在使用'$ t ['mt_playerid']'。有沒有其他地方可以獲得玩家ID? –

+0

作出一個新的查詢我猜...讓我看看謝謝你的幫助..? – user3740302

0

你可以試試這個修改後的更新查詢

mysql_query("UPDATE `members` SET drug_income = ".$total.", drug_incometotal = drug_incometotal + ".$total.", wallet = wallet + ".$total." WHERE `playerid` = '".$t['mt_playerid']."'"); 

它可能會解決你的問題..

+2

我無法發現差異。你有什麼改變,爲什麼? –

+0

,因爲在你的更新查詢中,你使用$ total作爲一個字符串類型的值,它將被連接在你當前的值 –

+0

那麼是什麼?無論如何,'+'都會將其參數轉換爲數字。 –