【发布时间】: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