PHP MySQL奇怪的更新问题

时间:2010-03-31 09:09:45

标签: 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 "$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',其中流量&gt; 50限制50”复制到phpMyAdmin时,它的工作非常正常,所以当mysql_affected_rows说它时,为什么它在我的PHP脚本中不起作用的任何想法已更新50条记录?

1 个答案:

答案 0 :(得分:1)

  1. 添加ORDER BY子句
  2. 您总是使用相同的数据进行重写。你需要指定WHERE with lane来更新另一行