由于php代码,本地主机未加载

由于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文件之前,我的xampp localhost一直运行良好

<?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
    }
    ?>