来自 SQL 查询的多维数组

Posted

技术标签:

【中文标题】来自 SQL 查询的多维数组【英文标题】:Multi-dimensional array from SQL query 【发布时间】:2014-05-04 04:03:25 【问题描述】:

我有一个多维数组,我正在尝试从 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
    )

【问题讨论】:

【参考方案1】:

您只在查询中选择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);

【讨论】:

【参考方案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);

【讨论】:

欢迎来到 Stack Overflow!尽管此代码可能有助于解决问题,但它并没有解释 为什么 和/或 如何 回答问题。提供这种额外的背景将显着提高其长期价值。请edit您的答案添加解释,包括适用的限制和假设。

以上是关于来自 SQL 查询的多维数组的主要内容,如果未能解决你的问题,请参考以下文章

如何添加来自不同数组的多维数组值

如何将多维PHP数组转换为html表

如何将sql结果动态转换为多维数组?

如何定义来自不同类的多维数组

在 laravel 中导出 excel 或 csv 中的多维数组

来自匹配mysql列的多维数组[关闭]