gpt4 book ai didi

php - while 在 foreach 中循环导致空白页

转载 作者:行者123 更新时间:2023-11-29 02:26:52 28 4
gpt4 key购买 nike

这个我真的想不通!

我正在尝试以下列方式显示数据库中的数据:

  • 一个 FOREACH 循环,循环遍历一个包含 12 个值的数组 ($jaren)。 (用户可以在开头的表单中使用“选择”输入来选择这些值之一,此处未显示)
  • WHILE 循环在 foreach 循环中应该遍历数据库中第五列等于 $jaren 数组的值的每一行,即 ' on'(foreach 循环遍历这些值中的每一个)。

更直观一点:

1e bach BMW:

Table with ALL rows of table for which the 5th column equals '1e bach BMW'

2e 巴赫宝马:

Table with ALL rows of table for which the 5th column equals '2e bach BMW'

等等……

罪魁祸首似乎是 while 循环的 表达式 ($row[5] = $jaar),但我无法弄清楚它有什么问题。当我加载页面时,我得到一个完全空白的屏幕。

$results = $DB->q("SELECT * FROM `jaartrui_zoekertjes`");
$row = $DB->fa($results);
$jaren = array('1e bach BMW', '2e bach BMW', '3e bach BMW', '1e master BMW', '2e master BMW', '1e bach GNK', '2e bach GNK', '3e bach GNK', '1e master GNK', '2e master GNK', '3e master GNK', '4e master GNK');

foreach($jaren as $jaar) {
echo "<b class='blauw'>".$jaar."</b>"
."<table><tr><th>Naam</th><th>E-mailadres</th><th>Ik heb</th><th>Ik wil</th></tr>";

while ($row[5] = $jaar) {
echo "<tr>"
."<td>".format_text($row[3])." ".format_text($row[2])."</td>"
."<td><a href='mailto:".format_text($row[4])."'>".format_text($row[4])."</td>"
."<td>".format_text($row[6])."</td>"
."<td>".format_text($row[7])."</td>"
."</tr><tr>"
."<td><b>Opmerkingen: </b>".format_text($row[8])."</td>"
."</tr>";
}
echo "</table>";
}

有人吗?提前致谢!

最佳答案

更新

在使用 DBMS 时,您可以(并且应该)使用查询来进行比较,尤其是当您只想获取某些列时。

foreach($jaren as $jaar) {
//...
$results = $DB->q("SELECT * FROM `jaartrui_zoekertjes` WHERE column = `$jaar`");
while ($row = $DB->fa($results)) {
//...
}
}

(将 column 替换为列的名称)现在在 while() 中,您将只有想要的行,并且可以按需要显示它们。这次 = 是正确的,因为你想分配 $row 检索到的值,还有 fa() (全部获取?)当没有任何行可供获取并中断 while 时,应该返回 false。

当然,您也可以像以前一样先获取所有行。但是这种做法存在以下问题

  1. 您需要在 PHP 中检查 column == $jaar 并因此遍历所有行。在 foreach 的每次迭代中,这可能非常耗时
  2. 假设您有没有匹配列的行(根本没有),您仍然会从数据库中检索这些行,并且必须检查所有这些行是否匹配 $jaar,这使我们回到 1。

有人可能会争辩说,对条件的检查也发生在您的数据库中(否则它怎么知道要返回哪些行?),但请记住,这些系统是专门为在这种情况下您想要的快速查询而设计的.所以在大多数情况下,让数据库尽可能多地工作会更好。


原始答案

$row[5] = $jaar 正在为 $row[5] 分配值 $jaar 并将等于 true(除非 $ jaar 是假的)。你可能打算写类似的东西

while ($row[5] == $jaar) {

因为 PHP 只在执行完成后才输出,所以像下面这样的东西也会让你得到一个空白页面

while (true)
print "something";

而不是没完没了的“东西”在屏幕上

关于php - while 在 foreach 中循环导致空白页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20059305/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com