2014-09-24 43 views
0

即時通訊嘗試所有想到的東西,但沒有任何工作。請教與多維數組的mysql

我有這樣

$sku _list = Array(
[0] => Array 
    (
     [sku] => 885370773958 
    ) 

[1] => Array 
    (
     [sku] => 711719805205 
    )) 

隨着未來代碼,使一個數組諮詢

$db = new mysqli("localhost", "user", "pass", "db"); 
$consult_sku = $db->query("SELECT * FROM fullfilment WHERE sku IN (" . implode(",", array_map(function ($sku_entry) { return $sku_entry['sku'];},$sku_list)) . ")"); 

獲得下陣,只用了$ sku_list

Array 
(
    [0] => 885370773958 
    [sku] => 885370773958 
    [1] => CAMO 
    [name] => CAMO 
    [2] => 1 
    [quantity] => 1 
) 
的第一個值

我想恢復一個類似於$ sku_list的數組來比較,這種方式是最好的得到結果嗎?

問候!

回答

1

使用PHP代碼並不令人羞恥,它會執行得非常快。因此,與其把這個怪物在你查詢:

array_map(function ($sku_entry) { return $sku_entry['sku'];},$sku_list) 

你可以寫簡單的理解是這樣的PHP代碼在您的查詢的面前:

foreach ($sku_list as $item) $sku[] = $item['sku']; 

然後做查詢:

$sql = 'SELECT sku FROM fullfilment WHERE sku IN ('.implode(',',$sku).')'; 
$result_sku = $db->query($sql); 

不要害怕多行,它會讓你的代碼更易於閱讀和理解。在此之後,你可以從結果中提取信息:

while($row = $result_sku->fetch_assoc()) { 
    $sku_found[] = $row; 
} 

現在$sku_found將與之相似的結構,以$sku_list

請注意,您的SQL命令包含一個*這意味着您檢索所有列。在我的示例中,僅使用了sku列。

+0

非常感謝!這對您的解釋和建議非常有幫助。我仍然是一個PHP新手。 – 2014-09-25 16:48:58