我正在做一个项目,我需要用数组的值更新数据库。起始值必须为 1,而不是 0,以便使用更新查询选择正确的数据库条目。
当我打印数组(如下所示)时,返回的结果从值 1 开始,但数据库未正确更新。数据库仍在使用数组的 0 值进行更新。
foreach($rowPrice as $priceID => $price) {
$rowPrice = array_combine(range(1, count($rowPrice)), array_values($rowPrice));
mysql_query("UPDATE ---- SET price='$price' WHERE id='$priceID' AND store_id='$store' LIMIT 1") or die (mysql_error());
}
这是打印时数组的一部分。这部分工作正常,但未通过更新查询进行翻译。
这就是数据库中条目的更新方式。
如您所见,查询仅插入从 2 开始的数组值。
我做错了什么?有更好的方法吗?
最佳答案
重新索引 $rowPrice
在开始迭代它之前。
$rowPrice = array_combine(range(1, count($rowPrice)), array_values($rowPrice));
foreach($rowPrice as $priceID => $price) {
mysql_query(...);
}
然而,这种方法似乎很脆弱,因为它假设数组中的值与数据库中的 ID 之间存在关联。最好将原始 ID 保存在数组中,以便您可以在更新期间引用它们。
关于mysql - 使用 "reindexed"数组更新 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508050/