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

PHP嵌套while循环无法运行 报unexpected '.'语法错误如何解决?

问题根本原因

你遇到的语法报错是因为错误地将PHP逻辑语句(数据库查询、if判断、while循环)和字符串拼接操作混写在了一起,PHP解析器无法识别中途插入的逻辑语句前后的.拼接符,才抛出了语法错误。原来的写法相当于在给$output追加字符串的过程中突然插入了独立的PHP代码,又错误地用拼接符连接逻辑语句和字符串,语法完全不成立。

修正后的可运行代码
$sql = "SELECT * FROM question where question_id={$update_id}";
$result = mysqli_query($conn, $sql) or die("query failed");
$output = '';
if(mysqli_num_rows($result) > 0){
    while($question = mysqli_fetch_assoc($result)){
        // 先拼接表单和select开头部分
        $output .= " <form id='edit-question-form'>
            <div class='form-panel'>
                <label for='question-faculty'>Faculty:</label>
                <select name='faculty' id='question-faculty'>
                ";
        // 单独执行内部院系查询逻辑,不要嵌入字符串拼接链
        $sql2 = 'SELECT faculty_id,faculty_name FROM faculty;';
        $result2 = mysqli_query($conn, $sql2) or die('query failed');
        if(mysqli_num_rows($result2)){
            while($faculty = mysqli_fetch_assoc($result2)){
                // 循环拼接option选项
                $output .= "<option value='{$faculty['faculty_id']}' ".(($question['faculty']==$faculty['faculty_id'])?'selected':'').">{$faculty['faculty_name']}</option>";
            }
        }
        // 最后拼接select和表单闭合部分
        $output .= "
                </select>
            </div>
        </form>
    ";
    }
}
优化建议
  • 字符串拼接和业务逻辑要拆分编写,不要把循环、数据库查询这类操作嵌入到同一条字符串拼接语句中,既容易出现语法问题,可读性也极差。
  • 建议使用参数绑定处理SQL查询,避免{$update_id}直接拼接带来的SQL注入风险。

内容的提问来源于stack exchange,提问作者Dark Crow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 19:15:02