我有两个阵列,例如 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");
所有这些查询一次执行。
答案 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);
}