2个数组UPDATE mysql查询。 1个数组包含要更新的值,其他数组包含要更新的唯一ID

时间:2017-02-01 22:01:58

标签: php mysql arrays mysqli

我有以下两个数组:

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

注意:中间有很多代码,这意味着数组的最终输出以逗号分隔,正如SQL查询中所期望的那样。 E.G:

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

然而,我无法弄清楚该怎么做。非常感谢任何帮助。

1 个答案:

答案 0 :(得分: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';
*/