如何在PHP中关联两个数组

时间:2017-05-03 10:39:03

标签: php mysql

我有两个阵列,例如 A &的

A=[1,2,3,4] , B=[10,20,30,40]

我想以这样的方式执行mysql更新查询。

$abc1=mysql_query("update table set corr='1' WHERE id=10");
$abc1=mysql_query("update table set corr='2' WHERE id=20");
$abc1=mysql_query("update table set corr='3' WHERE id=30");
$abc1=mysql_query("update table set corr='4' WHERE id=40");

所有这些查询一次执行。

4 个答案:

答案 0 :(得分:1)

只需循环em并使用第二个数组的索引

$as=[1,2,3,4] , $bs=[10,20,30,40];
foreach ($as as $key=>$val) {
    $abc1=mysql_query("update table set corr='".$val."' WHERE id=".$bs[$key]);
}

注意:您不应使用mysql使用mysqli代替

注意:始终逃避

答案 1 :(得分:1)

使用array_combine(),您可以创建一个新数组,将一个数组指定为键,另一个数组指定为新数组中的值。然后,只需循环生成的数组,然后执行查询。由于您现在拥有一个数组,因此请使用foreach循环并使用键(在本例中为$a中的所有值)和值(在本例中为$b中的所有值) )作为您正在设置的值。

这假设两个数组中的条目数始终相同。如果它们的大小不同,array_combine()将返回false - 您可以在执行查询之前将其用作检查。

$a = [1, 2, 3, 4];
$b = [10, 20, 30, 40];
$result = array_combine($a, $b);

foreach ($result as $k=>$v) {
    mysql_query("UPDATE table SET corr='$k' WHERE id = '$v'");
}

话虽这么说,这个查询很容易受到SQL注入攻击,你应该升级到一个更新的API,它支持带占位符(mysqli_*或PDO)的参数化查询。 {@ 1}} API已在PHP 5.6中弃用,并在PHP7中完全删除。

答案 2 :(得分:0)

假设两个数组长度相同,

<?php
$A=[1,2,3,4];
$B=[10,20,30,40];
for($i=0;$i<sizeof($A);$i++){
mysql_query("update table set corr='".$A[$i]."' WHERE id='".$B[$i]."'");
}
?>

答案 3 :(得分:0)

$a=[1,2,3,4];$b=[10,20,30,40];
$res=array_combine($a, $b );
foreach ($res as $key => $value) {
    $abc1=mysql_query("update table set corr='".$key."' WHERE id=".$value);
}