PHP MySQL更新问题

PHP MySQL更新问题,php,mysql,Php,Mysql,我在MySQL中有一个基于堆的表,我正试图通过PHP更新它,但由于某些原因,更新似乎没有发生 以下是我的测试代码: <?php $freepoints[] = 1; $freepoints[] = 2; $freepoints[] = 3; foreach ($freepoints as $entrypoint) { $query = "update gates set lane='{$entrypoint}' where traffic > 50 limit 50"; echo "

我在MySQL中有一个基于堆的表,我正试图通过PHP更新它,但由于某些原因,更新似乎没有发生

以下是我的测试代码:

<?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";
}
?>
从车道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”复制到phpMyAdmin中时,它工作得非常好,所以当mysql\u受影响的\u行说它已更新了50条记录时,你知道为什么它不能在我的PHP脚本中工作吗

  • 添加ORDERBY子句
  • 您总是使用相同的数据进行重写。您需要使用lane指定更新其他行的位置

  • 我将查询更改为以下内容,但仍然不起作用:更新gates set lane='{$entrypoint}',其中流量>50,lane!='{$entrypoint}按车道限制订购50哦,现在我意识到你所说的问题时,觉得自己是个白痴。我对查询做了如下更改,现在可以正常工作:“更新gates set lane='{$entrypoint}',其中流量>50,lane>'{$entrypoint}'限制50”。非常感谢。即使现在这对你们来说也是可行的——我建议你们一定要明确顺序,以获得明显的结果。
    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