0

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

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

4 回答 4

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];
于 2013-04-18T15:34:44.947 回答
0

我自己从未使用过它,但看起来带有一些魔法的PDO可以解决问题fetchAll

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

于 2013-04-18T15:33:18.550 回答
0

只需使用数组遍历结果。如果名称尚未在数组中,只需将名称添加为键和一个空数组即可。然后取 (name-)array 并添加城镇并将其放回所有名称的数组中。比你有你的关联数组。

于 2013-04-18T15:33:35.173 回答
0

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

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

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

于 2013-04-18T15:36:44.850 回答