【问题标题】:2 arrays UPDATE mysql query. 1 array contains values to update other array contains the unique ID to be updated2个数组更新mysql查询。 1 个数组包含要更新的值 其他数组包含要更新的唯一 ID
【发布时间】:2017-02-01 22:01:57
【问题描述】:

我有以下两个数组:

$array1 = (-5, -1, 9, 0, 5);
$array2 = (22, 19, 13, 11, 4);

注意:中间有很多代码,这意味着数组的最终输出是逗号分隔的,正如在 SQL 查询中所预期的那样。例如:

echo $array1;

输出:

-5, -1, 9, 0, 5

我想做一些类似的事情:

$UpdSQL ="UPDATE tbl_test SET ing_ml=('$array1') WHERE ing_id IN ('$array2')";

两个数组的顺序匹配。所以我想要发生的事情如下:

ID  | ing_ml
22  | -5
19  | -1
13  | 9
etc | etc

但是,我就是不知道该怎么做。任何帮助将不胜感激。

【问题讨论】:

  • 创建一个准备好的 UPDATE 语句并循环执行。

标签: php mysql arrays mysqli


【解决方案1】:

使用array_combine():

$array1 = [-5, -1, 9, 0, 5];
$array2 = [22, 19, 13, 11, 4];

$combined = array_combine($array2, $array1);

print_r($combined);

/* outputs:
Array
(
    [22] => -5
    [19] => -1
    [13] => 9
    [11] => 0
    [4] => 5
)
*/

foreach ($combined as $key => $value) {
  echo "UPDATE tbl_test SET ing_ml = '$value' WHERE ing_id = '$key';";
}

/* outputs:
UPDATE tbl_test SET ing_ml = '-5' WHERE ing_id = '22';
UPDATE tbl_test SET ing_ml = '-1' WHERE ing_id = '19';
UPDATE tbl_test SET ing_ml = '9' WHERE ing_id = '13';
UPDATE tbl_test SET ing_ml = '0' WHERE ing_id = '11';
UPDATE tbl_test SET ing_ml = '5' WHERE ing_id = '4';
*/

【讨论】:

  • array_combine() 是一个很好的建议,但是您应该使用准备好的语句并在循环外定义它。为了安全和性能。
  • 这是 OP 如何使用 array_combine 的演示。
  • 没关系.. 但你可以改进你的答案。
  • 这正是我所追求的。但是,当我尝试执行它时,只更新了第一条记录,其余错误为:Error updating record: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'UPDATE tbl_test SET ing_ml='-1' WHERE ing_id='19'' at line 1
猜你喜欢
  • 2020-12-11
  • 2019-08-05
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多