2017-05-03 21 views
3

我有兩個數組,如A & B如何將PHP中的兩個數組關聯起來


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

使用'array_combine'然後遍歷它,然後更新 –

+0

使用for循環進行迭代,並基於for循環的索引動態生成查詢。 – Jerodev

+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

注意:不要轉義,而是使用預準備語句 – DarkBee

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注入,你應該升級到支持具有佔位符(mysqli_*或PDO)參數化查詢更新的API。 mysql_* API已在PHP 5.6中棄用,並且完全在PHP7中刪除。

+0

難道你不認爲數組合並會導致更多的迭代。我們可以使用單循環的解決方案,就像Mazz所說的 –

+0

它不是'array_merge()',它是'array_combine()'。這使得來自兩個數組的新數組,其中一個是鍵,另一個是值。閱讀文檔。結果數組的長度與兩個數組的長度相同,在本例中爲4。 – Qirel

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