【发布时间】:2014-04-03 22:50:52
【问题描述】:
请参考下图。在这张图片中,编号 (1) 是我的数据库 userdb 中的字段 position 在我运行代码之前的样子。数字 (2) 是我在运行代码后期望在某些行的位置字段中发生的变化。第二行位置字段的值主要是2,我想改成3。同样,第三、第四和第五行的位置字段的值分别是我想改的主要3、4和5分别为 4、5 和 6。因此,我运行以下代码,并在浏览器中看到了我的期望。但是,在数据库中,我看到插入了错误的数据,例如图像上的数字 (3)。请注意,我对位置字段的最后期望值为 6(第五行),但我在所有行中都得到 6!!!
这是我运行的代码:
$requestedPosition = 2; $oldPosition = 6;
for($i=$requestedPosition+1; $i <= $oldPosition; $i++){
$query = mysql_query("UPDATE userdb SET position = '$i' WHERE position='{$requestedPosition}' ");
echo 'Old Position: '.$requestedPosition.' is now: '.$i.'<br>';
$requestedPosition++;
}
我认为 mysql 查询中一定有问题。如果我注释掉查询,我会在浏览器中得到预期的结果。但是,要将这些数据插入数据库,我需要运行查询,但是当我这样做时,我在数据库中插入了错误的数据。我在 Windows 上,运行 PHP 5.3.13,MySQL 5.5.24。
最令人困惑的是, 在 for 循环中,如果我将 $i=$requestedPosition+1; 更改为 $i=$requestedPosition;我插入了 2、3、4、5(分别在第 2、3、4、5 行)而不是 6、6、6、6。但是,我想插入 3、4、5、6(分别在第 2、3、4、5 行),所以我不得不在 for 循环中使用 $i=$requestedPosition+1;,并且当我这样做时,代码变得疯狂!那么,我是不是 :( 过去两天都被这个(头痛得很厉害)卡住了!
【问题讨论】: