You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP出现unexpected endwhile语法错误,请求排查navigation.php问题

解决PHP Parse Error: Unexpected 'endwhile' 错误

这个报错的核心原因很明确:你在代码中使用了endwhile语句,但它没有找到对应的、语法正确的while起始结构。PHP里while循环有两种合法写法,这两种写法不能混用,否则就会触发这类语法错误。

错误根源分析

从你提供的代码片段和报错位置来看,大概率是以下两种情况之一:

  • 你用了endwhile;来闭合循环,但开头的while语句是以花括号{结尾的(而不是冒号:),两种语法不匹配;
  • while循环的代码块没有完整编写,导致endwhile找不到对应的起始标记。

具体修复方案

根据你的代码场景,这里提供两种可行的修复方式:

方式1:使用花括号闭合循环(最常用的写法)

如果你的代码原本是用花括号来包裹循环内容,那就移除endwhile;,改用}来闭合循环:

<?php 
$sql = "SELECT * FROM categories WHERE parent = 0"; 
$pquery = $db->query($sql); 
?>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
<!-- Brand -->
<a class="navbar-brand" href="#">THELEWALAONLINE</a>
<!-- Links -->
<ul class="navbar-nav">
<?php while($parent = mysqli_fetch_assoc($pquery)) { // 用花括号开启循环 ?>
    <!-- 这里添加循环生成的导航项,比如: -->
    <li class="nav-item">
        <a class="nav-link" href="#"><?php echo $parent['category_name']; ?></a>
    </li>
<?php } // 用花括号闭合循环,替换掉原来的endwhile; ?>
</ul>
</nav>

方式2:使用冒号+endwhile语法(适合嵌入HTML的场景)

如果坚持要用endwhile;,那开头的while语句必须以冒号:结尾,不能用花括号:

<?php 
$sql = "SELECT * FROM categories WHERE parent = 0"; 
$pquery = $db->query($sql); 
?>
<nav class="navbar navbar-expand-sm bg-dark navbar-dark fixed-top">
<!-- Brand -->
<a class="navbar-brand" href="#">THELEWALAONLINE</a>
<!-- Links -->
<ul class="navbar-nav">
<?php while($parent = mysqli_fetch_assoc($pquery)): // 用冒号开启循环 ?>
    <!-- 这里添加循环生成的导航项 -->
    <li class="nav-item">
        <a class="nav-link" href="#"><?php echo $parent['category_name']; ?></a>
    </li>
<?php endwhile; // 这里的endwhile可以正确匹配 ?>
</ul>
</nav>

额外注意点

  • 确保你的while循环条件是完整的:你提供的代码片段里while($parent = mysq...没写完,完整的应该是mysqli_fetch_assoc($pquery)(或者mysqli_fetch_array等),用来从查询结果中取出每一行数据;
  • 检查第26行附近的代码,确认没有多余的或者遗漏的PHP标签,这也可能导致语法解析错误。

内容的提问来源于stack exchange,提问作者Rahul Dighe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 06:19:42