gpt4 book ai didi

php - 为什么 PHP 脚本和 MySQL 数据库数据的输出不一样?

转载 作者:行者123 更新时间:2023-12-01 00:45:22 27 4
gpt4 key购买 nike

请引用下图。在此图像中,编号 (1) 是我的数据库 userdb 中的字段 position 在我运行代码之前的样子。数字 (2) 是我在运行代码后期望某些行的位置字段发生的变化。第二行position字段的值主要是2,我想改成3。同理,第三行,第四行,第五行position字段的值,分别主要是3,4,5,我想改成3分别为 4、5 和 6。因此,我运行以下代码,并在我的浏览器中看到了我所期望的结果。但是,在数据库中我看到插入了错误的数据,例如图像上的数字 (3)。请注意,我对位置字段的最后期望值为 6(对于第五行),但我在所有行中都得到了 6!!!

enter image description here

这是我运行的代码:

            $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;,并且当我这样做时,代码变得疯狂!!!所以,我 :( 在过去的两天里,我一直坚持这个(头痛得很厉害)!

最佳答案

你的逻辑有点问题。

循环第一次运行时,您将更新一行 - 您将位置 2 的行更新为位置 3。这很好。

但是第二次循环运行时,您将位置为 3 的所有行更新为位置 4 - 现在有两个,一个来自表,一个是您刚刚更新的。第三次和第四次迭代也是如此。

您可以更优雅地完成此操作,一次调用:

$query = mysql_query("UPDATE userdb SET position = position + 1 WHERE position >={$requestedPosition} AND position <= ${oldPosition}' ");

我没有测试过,但它至少应该给你一个想法。

关于php - 为什么 PHP 脚本和 MySQL 数据库数据的输出不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22841170/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com