由于php代码,本地主机未加载
在我将此代码添加到php文件之前,我的xampp localhost一直运行良好由于php代码,本地主机未加载,php,sql,xampp,localhost,Php,Sql,Xampp,Localhost,在我将此代码添加到php文件之前,我的xampp localhost一直运行良好 <?php while ($notification) {?> <li> <?php echo $notification['notification']; ?> </li> <?php } ?> 在开始之前,我想向您推荐一些东西:避免使用while语句。除非真的需要它们——就像PHP文档中使用它们的方式一样(即使这样,您也可以找到替代
<?php while ($notification) {?>
<li>
<?php
echo $notification['notification'];
?>
</li>
<?php
} ?>
在开始之前,我想向您推荐一些东西:避免使用
while
语句。除非真的需要它们——就像PHP文档中使用它们的方式一样(即使这样,您也可以找到替代方法)——否则应该一直避免使用它们。我把动机写在下面
也就是说,。。。它不是$notification['notification']
,而是$notification['id']
更改它之后,仍然存在问题:无限循环。因为您正在使用while
循环,而不更改循环条件的状态。例如,您正在验证$notification
数组是否存在。因为它一直存在——它的状态在循环中从未改变过——那么迭代次数将是无限的。为了避免这种危险(!!!)情况,您可以使用以下代码
方法1:
请注意区别:$notification
仅在循环步骤期间有效。每次迭代后,$notification
是新创建的。并且,当在(最后+1)迭代步骤中mysqli\u fetch\u assoc()
返回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);
}
方法2:
或者,如果要获取数组中的结果并在以后输出其项,则可以按如下方式执行:
<?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
}
?>
其他建议:
- 使用以避免MySQL注入
- 使用以捕获所有错误并相应地处理它们。尤其是在运行数据库操作时
- 使用
PDO
而不是mysqli
在这里,我提供了准备好的语句与异常处理相结合的完整代码示例(使用mysqli
library):
祝你好运。可能是致命错误?屏幕上看不到任何内容。/浏览器的来源?错误报告正在进行吗<代码>
<?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
}
?>