2017-05-03 2 views
3

Ich habe zwei Arrays wie A & B.Wie zwei Arrays in PHP zu verbinden


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

Ich möchte wie diese eine MySQL-Update-Abfrage in einer Art und Weise auszuführen.


$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"); 

all diese Abfrage-Ausführung in einem Rutsch.

+0

Verwendung 'array_combine' dann über ihn durchlaufen und dann aktualisieren –

+0

Verwenden Sie eine for-Schleife, um Ihre Abfrage basierend auf dem Index Ihrer for-Schleife zu iterieren und dynamisch zu generieren. – Jerodev

+0

Möchten Sie sie zusammenführen? –

Antwort

1

Gerade Schleife em und verwenden Sie den Index für das zweite Array

$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]); 
} 

Hinweis: Sie sollten mysql nicht mysqli Verwendung anstelle

Hinweis: Immer entkommen

+1

Hinweis: nicht entkommen, aber vorbereitete Anweisungen verwenden – DarkBee

1

array_combine() verwenden, können Sie Erstellen Sie ein neues Array, geben Sie ein Array als Schlüssel und das andere als Werte im neuen Array an. Dann ist es nur eine Frage des Schleifens des resultierenden Arrays und des Ausführens von Abfragen. Da Sie jetzt ein Array verwenden, verwenden Sie eine foreach-Schleife und verwenden Sie die Schlüssel (in diesem Fall alle Werte von $a) und Werte (in diesem Fall alle Werte von $b) als die Werte, die Sie festlegen.

Dies setzt voraus, dass die Anzahl der Einträge in beiden Array immer gleich ist. Wenn sie nicht die gleiche Größe haben, gibt array_combine() den Wert false zurück - Sie können dies vor der Ausführung der Abfragen zur Überprüfung verwenden.

$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'"); 
} 

aber sagen, dass diese Abfrage ist anfällig für SQL-Injection, und Sie sollten auf eine neuere API aktualisieren, die parametrisierte Abfragen mit Platzhalter (mysqli_* oder PDO) unterstützt. Die API mysql_* wurde in PHP 5.6 eingestellt und in PHP7 vollständig entfernt.

+0

Glauben Sie nicht, dass Array kombinieren wird mehr Iterationen verursachen. Wir können eine einzelne Schleife für die Lösung verwenden, genau wie Mazz sagte –

+0

Es ist nicht 'array_merge()', es ist 'array_combine()'. Das macht ein neues Array aus zwei Arrays, wobei eines die Schlüssel und das andere die Werte ist. Lesen Sie die Dokumentation. Das resultierende Array hätte die gleiche Länge wie die beiden Arrays, in diesem Fall 4. – Qirel

0

beide Längen Arrays Unter der Annahme, sind die gleichen,

<?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]."'"); 
} 
?> 
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); 
}