如何将查询返回的两个字段加载到关联数组中?

时间:2013-04-18 15:29:40

标签: php mysql sql mysqli

我有一个具有这种结构的复杂查询:

SELECT DRIVER, TRAVEL 
FROM TRAVELS
WHERE ...

返回如下内容:

DAVID PARIS
DAVID OSLO
JHON  AMSTERDAM
DAVID MADRID
MARCO BARCELONA
JHON  ROME

嗯,我想要做的是将信息分为两部分。我的意思是,首先是一系列包含以下内容的驱动程序:

DAVID
JHON
MARCO

根据用户的选择,我想得到那个司机的旅行。假设您选择 DAVID ,将返回一个数组:

PARIS
OSLO
MADRID

我知道我可以轻松地将它分成两个查询,但正如我所说,这是一个复杂的查询数据库,有很多记录,这样我就可以节省时间。

我正在使用 php ...你会怎么做??带有关联数组? 你能举个例子吗?

我希望我的解释清楚。 提前谢谢。

4 个答案:

答案 0 :(得分:1)

两者首先将它们保存在数组中:

while ($row = $result->fetch_object()) { // for mysqli. for mysql use mysql_fetch_object($result)
   $travel[$row->DRIVER][] = $row->TRAVEL;
}

第一个:

$drivers = array_keys($travel);

第二个:

$locations = $travel[$driver];

答案 1 :(得分:0)

我自己从未使用它,但看起来像PDO fetchAll magic can do the trick

或者您可以手动循环返回结果,填充您希望的任何数组

答案 2 :(得分:0)

使用数组浏览结果。如果名称不在数组中,只需添加名称作为键和空数组。然后获取(name-)数组并添加城镇并将其放回所有名称的数组中。比你有关联数组。

答案 3 :(得分:0)

保持查询不变并遍历结果集并创建数据结构,其中数组键是驱动程序的名称,value是包含所有位置的数组。

array("DAVID" => array("PARIS", "OSLO", "MADRID"), ...);

现在,您可以使用array_keys函数获取驱动程序列表,并获取位置列表 使用$arr["DAVID"]