Tengo dos matrices como A & B.
A=[1,2,3,4] , B=[10,20,30,40]
Quiero ejecutar una consulta de actualización de mysql de una manera como esta.
$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");
todas estas consultas de ejecución de una sola vez.
Simplemente haga un bucle y use el índice para la segunda matriz
$as=[1,2,3,4] , $bs=[10,20,30,40]; foreach ($as as $key=>$val) { $abc1=mysqli_query("update table set corr='".$val."' WHERE id=".$bs[$key]); }
Nota: no debe usar mysql
, use mysqli
en su lugar
Nota: siempre escapar
Usando array_combine()
, puede crear una nueva matriz, especificar una matriz como claves y la otra como valores en la nueva matriz. Entonces es solo cuestión de hacer un bucle en la matriz resultante y ejecutar consultas. Como ahora tiene una matriz, use un bucle foreach
y use las claves (en este caso, todos los valores de $a
) y los valores (en este caso, todos los valores de $b
) como los valores que está configurando.
Esto supone que la cantidad de entradas en ambas matrices es siempre la misma. Si no son del mismo tamaño, array_combine()
devolverá falso; puede usarlo como verificación antes de realizar las consultas.
$a = [1, 2, 3, 4]; $b = [10, 20, 30, 40]; $result = array_combine($a, $b); foreach ($result as $k=>$v) { mysqli_query("UPDATE table SET corr='$k' WHERE id = '$v'"); }
Dicho esto, esta consulta es vulnerable a la inyección de SQL y debe actualizar a una API más nueva que admita consultas parametrizadas con marcadores de posición ( mysqli_*
o PDO). La API mysql_*
quedó obsoleta en PHP 5.6 y se eliminó por completo en PHP7.
$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); }