来自 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】:您只在查询中选择id
和name
,因此,在循环中:
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 查询的多维数组的主要内容,如果未能解决你的问题,请参考以下文章