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

HTML嵌套PHP展示MySQL表内容运行失败,代码问题如何排查?

代码存在的问题
  • 语法错误:第一部分PHP代码末尾有多余的右大括号},会直接触发PHP语法报错,导致代码无法运行。
  • 嵌套PHP标签无效:在已经开启的PHP代码块的echo语句中,再次写<?php ?>标签不会被PHP解析,只会被当作普通字符串输出到HTML源码中,不会执行内部逻辑。
  • 仅读取了单条数据:代码中只给$row赋值为$matrix[0],也就是查询结果的第一行,后续循环10次输出的都是同一行内容,没有遍历整个$matrix结果集。
  • 列数遍历不完整:表共19列,循环条件$a<18只会遍历前18个字段,缺失最后一列数据。
  • 单引号不解析变量:外层输出<tr>用的是单引号包裹字符串,内部的$row[$a]不会被解析为PHP变量,会直接当作普通文本输出。
  • 安全风险:直接拼接用户可控的$usr到SQL语句中存在SQL注入漏洞,直接输出数据库内容到HTML页面存在XSS漏洞。
修复后可运行代码
<?php
// 数据库连接
$con = mysqli_connect($host,$user,$password,$db);
// 使用预处理语句避免SQL注入
$stmt = mysqli_prepare($con, "SELECT * FROM data WHERE user = ?");
mysqli_stmt_bind_param($stmt, "s", $usr);
mysqli_stmt_execute($stmt);
$result = mysqli_stmt_get_result($stmt);
$matrix = mysqli_fetch_all($result);
// 释放资源
mysqli_stmt_close($stmt);
mysqli_close($con);
?>

<html>
<head>
<style>
table {
  border:2px solid black;
  width: 100%;
  margin-left:0%;
}
tr, td {
  border:1px solid black;
  width: 1%;
  font-size: 20px;
  text-align:center;
}
</style>
</head>
<body>
<table>
    <?php
    // 遍历所有查询到的行,无需硬编码10次循环
    foreach($matrix as $row) {
        echo '<tr>';
        // 遍历当前行所有字段,自动适配19列需求
        foreach($row as $cell) {
            // htmlspecialchars处理避免XSS风险
            echo "<td>".htmlspecialchars($cell)."</td>";
        }
        echo '</tr>';
    }
    ?>
</table>
</body>
</html>

内容的提问来源于stack exchange,提问作者Saeed Eisakhani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 02:54:06