PHP - 从 MySQL 表中获取大数组的有限 block

标签 php mysql arrays

假设您有一张这样的表:

ID  Cat1  Cat2
1    a     red
2    b     red
3    c     blue
4    d     blue
5    e     blue
6    f     green
etc  etc   etc

目标是显示 ID 和 Cat1(唯一对),根据 Cat2 分成组。简单的方法是为每个 Cat2 运行一个单独的 MySQL 查询,但是有很多不同的 Cat2 值会产生一个数量级的查询来向查看者显示一个页面,而不是仅仅在一个查询中获取全部数据,并且用 PHP 将它切开。

我的格式已经完成。但是我很难弄清楚如何根据取自 $value = mysql_fetch_row($result) 的数组 $value[2] 中的第三列值来限制我的行输出 使用
$sql = "SELECT ID,Cat1,Cat2 FROM MyTable ORDER BY Cat2,ID"

用简单的英语(显然不是真正的代码)它看起来像:

$result = mysql_query($sql);

IF ($value[2] from $value = mysql_fetch_row($result) = "red")
    {
        echo "Red Group";
        WHILE ()
    {
        echo $value[0] and $value[1] for all the rows where Cat2 = red
    }
    }

IF ($value[2] from $value = mysql_fetch_row($result) = "blue")
    {
        echo "Blue Group";
        WHILE ()
     {
        echo $value[0] and $value[1] for all the rows where Cat2 = blue
     }
    }
etc

这一切有意义吗?如何从 $result 数组中获取这些数据组?

显然是不是都说得通! :-) 这是所需输出的示例:

RED GROUP
1  a
2  b

BLUE GROUP
3  c
4  d
5  e

GREEN GROUP
6  f

etc

谢谢!

最佳答案

不知道我理解的对不对,这能解决你的问题吗?

基本思想是遍历所有行并始终保存 Cat2 的最后一个值。每当您检测到 Cat2 更改时,您可以插入新 Cat2 的“ header ”。因为您首先根据 Cat2 对结果进行排序,所以这将创建您想要的输出。

$query = "SELECT ID,Cat1,Cat2 FROM MyTable ORDER BY Cat2,ID"
$result = mysql_query($query);
$last = "";
while ($line = mysql_fetch_row($result)) {
  if ($line[2] != $last) {
    echo $line[2] . ' Group';
    $last = $line[2];
  }
  echo $line[0] . ' ' . $line[1];
}

关于PHP - 从 MySQL 表中获取大数组的有限 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1761732/

相关文章:

php - 如何在 dompdf 中应用 Bootstrap 样式

javascript - 计算JS中从php解析出来的变量

php - Magento - 发现 SQLSTATE[23000] : Integrity constraint violation: 1062 Duplicate entry, 错误

php - 如何替换字符串中的一两个连续换行符?

mysql - 是否可以在 mysql 中实现 2 个逗号分隔列表(通过 group_concat 获得)之间的包含检查?

mysql - SQL 选择仅包含特殊字符的值

php - 使用 jQuery 按 <td> 过滤表中的 mySQL 查询结果?

javascript - 使用 Array.reduce() 从获取 promise 中提取 JSON 数据

arrays - 是否可以从每个给定的间隔中选择一个数字而不重复选择。线性时间的解决方案

c++ - 重载运算符 '+' 以在 C++ 中添加两个数组