【发布时间】:2017-07-26 17:16:47
【问题描述】:
所以我在下面有一些 php,旨在查找尖峰表的列,并根据尖峰查询的结果构建一个 html 表。
当然,我不想为每个循环运行一个查询,所以我定义了 $schema 以在循环之前查询它。但是,如果我不在 while($spike...) 部分中声明它,它就不起作用。我在这里做错了什么?
请不要给我专有的回复。我试图坚持编写尽可能在 sql 解决方案之间交叉兼容的代码。
// Queries
$q_spikes = "SELECT * FROM spikes";
$q_schema = "SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = N'spikes'";
// Table
echo "<table>";
echo "<tr>";
$schema = $conn->query($q_schema);
while($info = $schema->fetch_assoc()) {
echo "<td>" . $info['COLUMN_NAME'] . "</td>";
}
echo "</tr>";
$spikes = $conn->query($q_spikes);
while($spike = $spikes->fetch_assoc()) {
echo "<tr>";
$schema = $conn->query($q_schema);
while($info = $schema->fetch_assoc()) {
echo "<td>" . $spike[$info['COLUMN_NAME']] . "</td>";
}
echo "</tr>";
}
echo "</table>";
【问题讨论】:
-
我认为在真正查询的第一行使用一个简单的
array_keys($spike)可以省去很多麻烦和麻烦 -
除非您需要使用
$spikes的结果值准备一个语句,否则甚至不需要在循环内进行查询,您可以在之前查询它并在每个迭代。 -
删除所有
$q_schema并迭代$spike。另外,您的字符串之前的N是什么?