【问题标题】:What is the best way to retrieve multi primary Mysql table into html table (php)将多主Mysql表检索到html表(php)的最佳方法是什么
【发布时间】:2016-12-30 08:15:30
【问题描述】:

我是 php 新手,我想知道将 mysql 数据检索到 html 表中的最佳方法。目前我无法提供格式正确的代码,因为我正在打电话,但假设情况是这样的:

我有这个结构的mysql表:

Row -> PK

Column -> PK

Value

我有大约 10 列和一个动态行需要显示在网页中。

我的想法是要么循环一个小查询并回显它,要么将它存储在一个大数组中并快速扫描。

第一个想法:

For ($y = 0; $y < $rowCount; $y++){
Echo "<tr>";
    For ($x = 0; $x < 10; x++){
        $row = Mysqli_query($db,"SELECT Value FROM table WHERE Row='".$y."' AND Column='".$x."'");
        $row = mysqli_fetch_assoc($row);
        Echo "<td>".$row['Value']."<td>";
    }
    Echo "</tr>";
}

第二个想法:

$data = Mysqli_query($db,"SELECT * from Table");
For ($y = 0; $y < $rowCount; $y++){
    Echo "<tr>";
    For ($x = 0; $x < 10; $x++){
        While($key = mysqli_fetch_assoc($data)){
            If($key['Row']==$x && $key['Column']==$y)
            Echo "<td>".$row['Value']."<td>";
        }
    }
Echo "</tr>";
}

对不起,如果我有错误的语法,因为我在没有语法备忘单的情况下输入它,我的意思是告诉技术,而不是要求调试。

第一个想法是使用 mysqli 查询“WHERE”来查找主要(行和列)。然后循环发送垃圾查询。

第二个想法是将所有的表结果存储在变量($data)中,然后用While循环继续扫描变量。

请注意,行数是动态的,最多可以添加 500 个数据。这也是我考虑发送垃圾邮件查询而不是将所有内容存储在变量 ($data) 中的原因。但我也想知道垃圾邮件查询是否不是最好的主意,因为程序必须保持连接。

我希望有人能提出第三个想法。

在实际情况下,我的表比这更复杂,并且包含大约 5 个主键。但是这个概念几乎等同于上面的例子。

【问题讨论】:

  • "由大约 5 个主键组成" -- 解释一下。
  • 5 个键:用户名、期间、列、行、子行。对于这种情况,我只需要关注 Clumn、Row 和 SubRow。
  • 将 subRow 添加到案例中将很难解释,因为它涉及 td rowspan。我想把问题集中在数据检索上,而不是前端,这就是为什么我将它略读到只有两个主键。
  • PRIMARY KEY 必须是“唯一的”,并且它包含的列不应超过唯一所需的列数。

标签: php mysql mysqli query-optimization


【解决方案1】:

在循环之外,使用ORDER BY 执行SELECT。让循环获取行。请注意,它将按照已指定的顺序获取它们,因此您不需要那种凌乱的if

【讨论】:

  • 感谢您的想法。我需要的是排序的列,然后必须在列之后对行进行排序。就像第 1 列第 1 行、第 1 列第 2 行、第 1 列第 3 行、第 2 列第 1 行等。如果我订购该列,它还会订购该行吗?或者有什么好的查询可以订购两个主要的?
  • 我认为您混淆了“列”和“行”。 SELECT col1, col2, col3 FROM tbl ORDER BY col1, col2 col3;
  • 我明白了.. 我将按语法尝试这些多重顺序。谢谢,真的帮了大忙。
猜你喜欢
  • 2015-04-08
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 2011-04-01
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多