请参考下图.在此图像中,数字(1)是我运行代码之前数据库userdb中的字段位置.数字(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++;
}
Run Code Online (Sandbox Code Playgroud)
我认为在mysql查询中一定有问题.如果我注释掉查询,我会在浏览器中获得预期的结果.但是,要将这些数据插入数据库,我需要运行查询,但是当我这样做时,我会在数据库中插入错误的数据.我在Windows上运行PHP 5.3.13,MySQL 5.5.24.
最令人困惑的是,在for循环中,如果我改变$ i = $ requestedPosition + 1; to $ i = $ requestedPosition; 插入2,3,4,5(分别在第2,第3,第4,第5行)而不是6,6,6,6.但是,我想要3,4,5,6插入(分别在第2,第3,第4,第5行),所以我不得不使用$ i = $ requestedPosition + 1; 在for循环中,当我这样做时,Code变得疯狂!那么,我是否:(最近两天坚持这个(头痛得厉害)!