刚开始学习php,这是我的第一个项目: 对列表项进行排序并将新订单保存到数据库。但我真的坚持如何使用新的订单号保存订单。
我有一个这样的数组: order numbers
我想循环浏览并更新表格中的 ordernumber 列。
到目前为止,我有这个设置:
foreach ($a as $key => $neworder) {
$sql = "UPDATE todoitem SET ordernumber = '$key' WHERE Id = '$neworder'";
}
但是当我对列表项进行排序时,我得到了这个: todoitem table
只有最后一行得到更新,订单号是3?我不明白3来自哪里。
我已经在这脑子上刮了几天而且我被卡住了......
答案 0 :(得分:2)
此:
foreach ($a as $key => $neworder) {
从0到3循环(因为这些数字在你的数组中有4个键)。
此:
$sql = "UPDATE todoitem SET ordernumber = '$key' WHERE Id = '$neworder'";
将$sql
变量设置为字符串,由$key
和$neworder
值构建。
现在,代码实际上从未对该循环中的查询执行任何操作。它每次都会覆盖它。所以循环的 last 迭代将是循环后$sql
的值。 (大概那是你实际上在某种程度上使用它。)
如果我的假设是正确的并且您在循环之后执行查询,那么代码在语义上执行以下操作:
它只执行一次。也许你打算在循环中执行查询?
答案 1 :(得分:0)
您正在覆盖循环中的$sql
变量。你也应该在循环中执行它。这样只会执行最后一次$sql
。
对于id为4且行号为3的行,您可能希望更改sql参数 - 使用$key
切换$neworder
。那是
"UPDATE todoitem SET ordernumber = '$neworder' WHERE Id = '$key'";