有没有办法从SQL查询中返回二维数组?像..
“SELECT id,x,y,z FROM test”
..并将其作为id =>返回x,y,z?我可以做一个循环并创建第二个数组,但我想这是我可能不必做的额外工作。现在就不熟悉SQL。
答案 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
中每一行的x
,y
,z
和test
值。 id
与x
,y
和z
相关联,因为它在同一行中返回。
如果您想要一个将id
值映射到x
,y
和z
的PHP数据结构,则必须执行SELECT语句并构建此结果集中的数据结构。