从SQL查询返回二维数组

时间:2010-01-03 20:14:04

标签: php sql

有没有办法从SQL查询中返回二维数组?像..

“SELECT id,x,y,z FROM test”

..并将其作为id =>返回x,y,z?我可以做一个循环并创建第二个数组,但我想这是我可能不必做的额外工作。现在就不熟悉SQL。

3 个答案:

答案 0 :(得分:6)

在PHP中,SQL查询只返回结果集。行和列。

您需要进一步循环才能将其处理为您所指的那种数组。这没问题,如果经常使用它,它应该是数据库包装器的一部分。

$result = mysql_query(...);
$aData = array();
while($row = mysql_fetch_assoc($result))
   $aData[$row['id']] = array($row['x'], $row['y'], $row['z']);

答案 1 :(得分:2)

你的问题的答案是否定的,没有办法做到这一点。

关系数据库本质上是二维结构。它们可以表示结构之间的关系,但所有数据都以平面的二维方式存储,并且查询和返回。不幸的是,数据结构的概念与编程语言没有相同的概念。从SQL查询获得的任何结果始终是字段和值的标量数据集。通过将列名称作为数组键返回,并将字段值作为数组值返回,PHP可以使这更容易一些,但这就是你可以得到的。

为了将结果放入多维数组中,在从数据库中提取结果后,您必须使用PHP。

答案 2 :(得分:0)

SQL已经返回了2D数据集 - 多行,每行每行具有相同的字段。当您SELECT id, x, y, z FROM test时,它会返回id中每一行的xyztest值。 idxyz相关联,因为它在同一行中返回。

如果您想要一个将id值映射到xyz的PHP数据结构,则必须执行SELECT语句并构建此结果集中的数据结构。