mysql - 使用 "reindexed"数组更新 MySQL 数据库

标签 mysql arrays

我正在做一个项目,我需要用数组的值更新数据库。起始值必须为 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());
}


这是打印时数组的一部分。这部分工作正常,但未通过更新查询进行翻译。

Array


这就是数据库中条目的更新方式。

Database


如您所见,查询仅插入从 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/

相关文章:

MySQL:仅当有行时才执行

php - 为 WHERE 条件选择相等数量的记录

Mysql在应该的时候没有给出语法错误

c - 动态字符串数组

javascript - 如何在 Javascript 中获取嵌套数组的长度?

mysql - 对一对多连接进行排序

php - mysql查询fetch all rows匹配用户组只有一个

arrays - 使用 Google Sheets 过滤器减去数组(设置差异)

arrays - SwiftUI 组合来自两个不同数组的两个 ObservedObject

c - 如何在 C 中使用动态多维数组?