【发布时间】:2020-12-03 21:50:54
【问题描述】:
我有七个正在使用 mysqli_multi_query 函数执行的 SQL 查询:
if (mysqli_multi_query($conn, $airlinesql)) {
do {
if ($result = mysqli_store_result($conn)) {
while ($row = mysqli_fetch_row($result)) {
HELP!!
}
mysqli_free_result($result);
}
} while (mysqli_next_result($conn));
}
//Build and fill HTML table
HELP!!
七个查询中的每一个查询每行只返回一个元素,但每个查询返回的行数 是未知的 - 甚至可能为 NULL。我希望每个查询结果都在 HTML 表中填充自己单独的 column。换句话说,第一个查询可能返回 5 行,每行只有一个元素。我希望这 5 个元素中的每一个都进入 HTML 表的第一列中自己的行。第二个查询结果可能返回 1 个元素。此元素应位于 second 列的第 1 行。等等。虽然每个查询返回的行数未知(甚至可能为空),但列数固定为 7(因为这是查询数)。我猜将所有结果扔到数组中是正确的想法,但我无法弄清楚如何使用 while/for 循环从数组中构建表,因为您通常按行构建,而我的想法是按列构建由于每个查询返回的行数未知。或者,也许有比使用 mysqli_multi_query 更好的方法?感谢您的帮助。
【问题讨论】:
-
是的,首先将这些数据放入一个多维数组中,然后确定“最大”查询返回的最大结果数是多少——这就是您要创建的表行数。所以使用一个简单的
for循环,然后在另一个for循环中使用七列。然后只需使用isset检查数组是否在相应位置包含条目 - 如果是,则将该值作为表格单元格内容输出,否则为-或什么都没有。 -
我认为最重要的问题是为什么你需要使用
mysqli_multi_query?有什么办法可以避免这种情况吗?你可以使用普通的mysqli查询吗?你能用 PDO 代替吗? -
我有点期待在你的 sn-p 中看到
mysqli_more_results()像这样:stackoverflow.com/a/22469722/2943403 我曾经认为多查询功能很可爱——现在我从来没有看到调用它有什么好处。对我个人来说,这只是一时的时尚。我们可以看看你的 7 个 sql 字符串吗?您是否只需要使用UNIONs 进行一次查询? -
@mickmackusa 我认为你不需要
mysqli_more_results(),但我同意这个功能太麻烦了,没有理由使用它。
标签: php mysql mysqli html-table mysqli-multi-query