SQL查询的多维数组

时间:2014-03-26 00:51:07

标签: php mysql arrays multidimensional-array

我有一个多维数组,我试图从SQL查询构建。我在内部数组中添加id时遇到问题。

代码:

$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 个答案:

答案 0 :(得分: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指南和相关常见问题解答以获取更多信息   信息。该功能的替代方案包括:   mysqli_fetch_array()PDOStatement :: fetch()

如果您使用MySQLi扩展程序,则可以使用:

$names = mysqli_fetch_all($result, MYSQLI_ASSOC);

答案 1 :(得分:-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);