php
  • mysql
  • 2010-03-31 85 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

    相关问题