2014-03-26 62 views
3

我有一個多維數組,我試圖從SQL查詢構建。我在添加內部數組中的id時遇到問題。來自SQL查詢的多維數組

代碼:

$checkboxes = "SELECT id, name FROM review_sites WHERE active=1 ORDER BY name ASC"; 
$result = mysql_query($checkboxes) or die(mysql_error()); 
$names = array(); 

while ($row = mysql_fetch_array($result)) { 
    $names[]['name'] = $row['name']; 

} 

目前陣的樣子:

Array 
(
[0] => Array 
    (
     [name] => 411.ca 
    ) 

[1] => Array 
    (
     [name] => AutoMD 
    ) 

我需要的陣列看起來像這樣:

Array 
(
[0] => Array 
    (
     [id] => 4 
     [name] => 411.ca 
    ) 

[1] => Array 
    (
     [id] => 9 
     [name] => AutoMD 
    ) 

回答

2

你只選擇idname查詢如此,在循環中:

while ($row = mysql_fetch_assoc($result)) { 
    $names[] = $row; 
} 

或者乾脆:

while ($names[] = mysql_fetch_assoc($result)) {} 

通知,mysql_fetch_assoc()只返回一個關聯數組。 mysql_fetch_array()返回一個關聯和數字索引的數組。

另外:

這個擴展不贊成PHP 5.5.0,並且將在 將來被移除。相反,應該使用MySQLi或PDO_MySQL擴展。 另請參見MySQL:爲更多 信息選擇API指南和相關FAQ。替代該功能包括: mysqli_fetch_array()PDOStatement對象::獲取()

如果你使用MySQLi擴展,然後你可以使用:

$names = mysqli_fetch_all($result, MYSQLI_ASSOC); 
-2
$checkboxes = "SELECT id, name FROM review_sites WHERE active=1 ORDER BY name ASC"; 
$result = mysql_query($checkboxes) or die(mysql_error()); 
$names = array(); 

while ($row = mysql_fetch_array($result)) { 
    $names['id'] = $row['name']; 

} 

var_dump($names); 
+0

哎,它的不會以適當的方式工作。 –

+0

歡迎來到Stack Overflow!雖然這段代碼可能有助於解決這個問題,但它並沒有解釋_why_和/或_how_它是如何回答這個問題的。提供這種附加背景將顯着提高其長期價值。請[編輯]您的答案以添加解釋,包括適用的限制和假設。 –