我的xampp localhost运行良好,直到我将此代码添加到我的php文件
<?php while ($notification) {?>
<li>
<?php
echo $notification['notification'];
?>
</li>
<?php
} ?>
现在页面未加载或部分加载
这里$ notification是
$notification_sql= "SELECT id FROM notifications WHERE user_id='{$_SESSION['user']}'";
$notification_query = mysqli_query($conn, $notification_sql);
$notification = mysqli_fetch_assoc($notification_query);
答案 0 :(得分:0)
在开始之前,我想向您推荐一些内容:避免使用while
语句。除非确实需要它们 - 就像它们在PHP文档中使用的确切方式一样(即使这样你也可以找到替代方案) - 应该始终避免使用它们。我提出了动机。
那就是说,......不是$notification['notification']
,而是$notification['id']
。
更改后,您仍然遇到问题: 无限循环 。因为您使用while
循环而不更改循环条件的状态。例如,您正在验证$notification
数组是否存在。因为它一直存在 - 它的状态永远不会在循环中发生变化 - 然后迭代的数量将是无限的。为了避免这种危险(!!!)情况,您可以使用以下代码。
注意区别:$notification
仅对循环步骤有效。每次迭代后,新创建$notification
。并且,当mysqli_fetch_assoc()
在(最后+1) - 步骤中返回FALSE
时,$notification
会收到该值,因此循环结束。
<?php
$notification_sql = "SELECT id FROM notifications WHERE user_id='{$_SESSION['user']}'";
$notification_query = mysqli_query($conn, $notification_sql);
if ($notification_query) {
while ($notification = mysqli_fetch_assoc($notification_query)) {
?>
<li>
<?php
echo $notification['id'];
?>
</li>
<?php
}
mysqli_free_result($notification_query);
}
&GT;
或者,如果您想在数组中获取结果并稍后输出其项目,那么您可以这样做:
<?php
$notification_sql = "SELECT id FROM notifications WHERE user_id='{$_SESSION['user']}'";
$notification_query = mysqli_query($conn, $notification_sql);
$notifications = array();
if ($notification_query) {
while ($row = mysqli_fetch_assoc($notification_query)) {
$notifications[] = $row['id'];
}
mysqli_free_result($notification_query);
}
// OTHER STUFF AFTER FETCHING...
?>
<?php
// LOOPING AT A LATER TIME.
foreach ($notifications as $notificationId) {
?>
<li>
<?php
echo $notificationId;
?>
</li>
<?php
}
?>
PDO
代替mysqli
。这里我提供了预处理语句的完整代码示例以及异常处理(使用mysqli
库):