php
  • mysql
  • 2010-03-31 106 views 0 likes 
    0

    我有一個基於MySQL的表,我試圖通過PHP來更新,但由於某種原因,更新似乎沒有發生。PHP MySQL奇怪的更新問題

    這是我的測試代碼:

    <?php 
    $freepoints[] = 1; 
    $freepoints[] = 2; 
    $freepoints[] = 3; 
    foreach ($freepoints as $entrypoint) { 
    $query = "update gates set lane='{$entrypoint}' where traffic > 50 limit 50"; 
    echo "$query\n"; 
    mysql_query($query); 
    echo mysql_affected_rows()."\n"; 
    } 
    ?> 
    

    此輸出以下:

    update gates set lane='1' where traffic > 50 limit 50 
    50 
    update gates set lane='2' where traffic > 50 limit 50 
    50 
    update gates set lane='3' where traffic > 50 limit 50 
    50 
    

    在數據庫開始與車道1/2/3具有0記錄和泳道4/5/6有100條記錄。從這裏我期待所有6車道現在有50個記錄。然而,當我看起來泳道4/5/6仍然有100條記錄,1/2/3仍然有0條記錄。

    當我複製查詢「update gates set lane ='1'where traffic> 50 limit 50」into phpMyAdmin它工作得很好,所以任何想法爲什麼它不能在我的PHP腳本中工作,當mysql_affected_rows說的時候已更新50條記錄?

    回答

    1
    1. 添加ORDER BY子句
    2. 你總是使用相同的數據重寫。你需要用車道更新其他行指定
    +0

    我改變查詢以下,但仍然無法正常工作:更新門設置車道=「{$入口點}」這裏交通> 50和車道=「{ $ entrypoint}'按車道限制排序50 – Tim 2010-03-31 09:18:55

    +0

    哦,現在當我意識到你說的這個問題時,我感覺自己很蠢。我改變了查詢如下,它現在工作正常:「更新門設置車道='{$ entrypoint}',其中traffic> 50和lane>'{$ entrypoint}'限制50」。謝謝! – Tim 2010-03-31 09:21:40

    +0

    即使它現在適合你 - 我建議總是指定ORDER以獲得明顯的結果。 – zerkms 2010-03-31 09:23:04

    相關問題