2010-08-29 74 views
0

我試圖從數據庫中獲取每個數組值的類別名稱,然後將類別名稱添加到數組中$cat_name,我該如何使用PHP & MySQL來做到這一點?PHP和MySQL數組問題

$array = array(1, 2, 3, 4, 5); 

$cat_name = array(); 
$dbc = mysqli_query($mysqli,"SELECT category 
       FROM categories 
       WHERE id = '" . $array . "'"); 


if (!$dbc) { 
    print mysqli_error($mysqli); 
} else { 
    while($row = mysqli_fetch_array($dbc)){ 
    $cat_name[] = $row['category']; 
    } 
} 

回答

0

做這樣的:

$dbc = mysqli_query($mysqli,"SELECT category 
       FROM categories 
       WHERE id IN (" .implode(",", $array). ")"); 
+0

如果我的數組看起來像這樣'Array([0] => 1 [1] => 34)' – leftout 2010-08-29 12:02:56

+0

什麼類型的id是指整型,字母等 如果它的數字那麼這個數組不能應用... 和數組必須是單維,否則你必須使用SELECT查詢多於一個... – 2010-08-29 12:03:19

+0

看看新的編輯 – leftout 2010-08-29 12:04:48

0
$dbc = mysqli_query($mysqli,"SELECT category 
    FROM categories 
    WHERE id IN (" . implode(",", $array) . ")"); 

做的事情時,不過確保您的數組實際上只包含整數或者你有一個討厭的SQL注入漏洞。如果您的數組可能包含其他內容,請在執行此操作之前通過循環轉義所有值並將它們括在引號中。

+0

如果我的數組看起來像這樣'Array([0] => 1 [1] => 34)' – leftout 2010-08-29 12:04:04

+0

@leftout:...這是一個整數數組。只要確保它總是那樣。 – 2010-08-29 12:07:24

0

代碼看起來不錯。我是否有權假定每次都會出現錯誤?我不認爲你的SQL語法是正確的。我使用'WHERE ID IN('。implode($ array,',')。')'。不知道這是否是你的問題...

編輯:我有輕微的懷疑,你也可以取消你的循環,而不是簡單地發出第二個'類'列的提取。

+0

如果我的數組看起來像這樣'Array([0] => 1 [1] => 34)' – leftout 2010-08-29 12:03:23

+0

我想你可以去implode(array_values($ array),',')。 – Ollie2893 2010-08-29 12:13:01