2012-08-15 89 views
0

我post_ids如何使用數組作爲列加入一列mysql表?

$ids = array( 
    [0] => 32 
    [1] => 33 
    [2] => 21 
    [3] => 11 
    [4] => 13 
    [5] => 17 
    [6] => 41 
    [7] => 88 
    [8] => 92 
    [9] => 94 
    [10] => 96 
    [11] => 106 
    [12] => 117 
    [13] => 187 
    [14] => 220 
); 

我想在數據庫表中的列,其中POST_ID的ID匹配上述數組中的數組。該表的結構是這樣

post_id | meta_key | meta_value 

目前,我使用foreach ($ids as $id)來查詢一個變種一個接一個。對於大數據集來說這是低效的。有沒有辦法通過$ ids數組查詢meta_value列?

回答

0

這不是最有效的方式,但它的工作原理

$idList = implode(",",$ids); 

現在查詢

$query = "SELECT * FROM posts 
      WHERE post_id IN ($idList);"; 

至少現在減少到一個查詢

更新:

爲了保護SQL注入填充你的數組,確保你的數據庫輸入是安全的:

// if you are populating your array this way here is the trick 
$ids = array(); 
foreach ($inputValues as $value){ 
    $ids[] = (int) $value; // this makes sure your input is an integer 
} 
+1

你錯過了行' – Incognito 2012-08-15 22:41:18

+0

@ibu,這個查詢很有效!謝謝! – Jenny 2012-08-15 22:54:07

+0

@Incognito實際上沒有在$ id是用戶輸入的問題上說,它顯示了一個數組 – Ibu 2012-08-15 22:54:33