0

我有一个如下的数据库表:

id | igroup | title     | url          | text
1  |   gr1  | Title 1   | urltoimage1  | text1
2  |   gr1  | Title 2   | urltoimage2  | text2
3  |   gr2  | Title 3   | urltoimage3  | text3
4  |   gr2  | Title 4   | urltoimage4  | text4

我的意思是,我想要一个多维数组(用于上述结构),如下所示;

$result[gr1] = [Title 1|urltoimage1][Title 2|urltoimage2]
$result[gr2] = [Title 3|urltoimage3][Title 4|urltoimage4]

最后,我将$result通过 JSON 将此数组发送到页面。

因此,在我的页面中,我将为分类图片库安排这些值,例如:

Group 1(caption text)
--------
image1 image2 (clickable images)

Group 2(caption text)
--------
image3 image4 (clickable images)

编辑:我通过 igroup 更正了组字段。

问题已修改。

4

1 回答 1

2

您将需要使用ORDER BY添加到查询中的语句来获取结果。

SELECT id, igroup, title, url, text
FROM images
ORDER BY igroup;

警告:

请不要使用mysql_*函数来编写新代码。它们不再被维护并且社区已经开始了弃用过程。看到红框了吗?

相反,您应该了解准备好的语句并使用PDOMySQLi本文应该提供一些有关决定使用哪个 API 的详细信息。对于 PDO,这里有一个很好的教程

示例代码:

$result = mysql_query(THE_STATEMENT_ABOVE);

$groups = array();
while ( $row = mysql_fetch_assoc($result) )
    $groups[ $row['igroup'] ][] = $row;

这将建立一个很好的$groups数组。要解析上面创建的数组,您可以使用迭代器或简单的foreach构造。

foreach ( $groups as &$one_group ) {
    print("Group 1: <br>");

    foreach ( $one_group as &$one_image ) {
        // Here you have the contets of the previously fetched $row rows of the result.
        print('<a href="' .$one_image['url']. '">' .$one_image['title']. '</a><br>');
    }
}

这会给你一个很好的输出,如下所示:

Group 1:
Image 1 (clickable)
Image 2 (clickable)

Group 2:
Image 3 (clickable)
Image 4 (clickable)

不再适用:此外,您应该避免将GROUP其用作字段名称,因为它是MySQL 的保留字之一。

编辑:我还将字段名称更正为igroup.

于 2012-08-06T20:36:04.293 回答