1

所以我有一个 MySQL 表:

Table Data:

id | domain     | title                | Full Url to Page | ... etc ...
1  | place.com  | Place Something      | http://place.com/1...
2  | place.com  | Place Something Else | http://place.com/2...
3  | place.com  | Some Other Place     | http://place.com/3...
4  | pets.com   | Cats Dogs Oh My      | http://pets.com/2....
5  | pets.com   | Bird Edition         | http://pets.com/3....

我需要(在 PHP / JQuery 中)是为每个唯一域获取一个 id 数组。所以我想要上表的最终输出是:

$finalArray = array('place.com' => array(1, 2, 3), 'pets.com' => array(4, 5));

我目前的解决方案是获取按域排序的所有行,这是 MySQL 语句:

SELECT `id`, `domain` FROM `gsort_linkdata` ORDER BY `domain`

返回:

1  | place.com
2  | place.com
3  | place.com
4  | pets.com
5  | pets.com

然后我循环遍历 PHP 中的行并将它们分解为数组。我宁愿从数据库中提取已经分解的数据。那可能吗?谢谢!

4

1 回答 1

2

你可以使用GROUP_CONCAT

SELECT GROUP_CONCAT(`id`), `domain` FROM `gsort_linkdata` GROUP BY `domain`

(注意group_concat_max_len。)

但是因为没有办法将数组从 MySQL 传递给 PHP,你需要在 PHP 或 JS 中拆分生成的字符串,所以我认为你当前的方法是更好的方法。您的方法是安全的,并且实际上只是 PHP 中的一种,其他任何东西(包括 GROUP_CONCAT)都更复杂。

于 2012-12-28T01:47:48.017 回答