

新闻资讯
技术学院php 报错“trying to access array offset on value of type bool”表明 `fetch()` 返回了 `false`(查询失败或无数据),而非预期的关联数组,根本原因是错误混用了 pdo 的预处理语句与普通查询的取值方式。
当你使用 $conn->prepare() + $stmt->execute() 执行查询时,$stmt->fetch() 是完全可用的——但前提是必须确保:
而你当前报错的核心在于:$result->fetch() 在首次调用时就返回了 false,说明查询未返回任何有效行(可能因 SQL 错误、空表、权限问题或字段名不匹配)。此时 $row 是布尔值 false,后续 $row['id'] 就会触发「尝试对布尔值访问数组下标」的致命警告。
✅ 正确做法(推荐使用 PDO 预处理,兼顾安全与可维护性):
prepare("SELECT id, date, line, block, start FROM bustracker ORDER BY id ASC");
if (!$stmt->execute()) {
error_log("Query failed: " . implode(", ", $stmt->errorInfo()));
die("数据库查询失败,请检查配置和表结构。");
}
// 2. 安全遍历结果(使用 fetch(PDO::FETCH_ASSOC) 明确指定返回关联数组)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$id = (int)$row['id']; // 强制转为整型,防 XSS 和类型隐患
?>
" class="btn btn-info">Edit
" data-toggle="modal" class="btn btn-danger">Delete
⚠️ 关键注意事项:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
cho 前务必用 htmlspecialchars() 防止 XSS 攻击,尤其当字段含用户输入内容时。rowCount() === 0): ?>
暂无数据
总结:该问题本质是「未校验查询执行状态 + 误判 fetch() 返回值类型」。坚持使用 PDO 预处理、显式指定 FETCH_ASSOC、逐层排查连接/SQL/字段三要素,即可彻底解决表格空白与 PHP 警告。