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

查询中使用DATE_FORMAT引发「Notice: Trying to access array offset on value of type bool in」报错的问题求助

解决「Notice: Trying to access array offset on value of type bool」问题

首先,这个错误的核心原因很明确:当你调用$getprod_t->fetch()时,如果查询没有匹配到任何记录,它会返回false(布尔值),而你直接尝试访问$prod_t['qte'],就会触发这个数组偏移访问的Notice。

至于为什么昨天加DATE_FORMAT还能正常运行,今天却不行,而且移除它就恢复,我帮你拆解几个可能的原因和对应的解决方案:

1. 先给代码加个安全判断(紧急修复)

不管是什么原因,先给代码加上结果判断,避免直接访问布尔值的数组偏移:

$getprod_t = $bdd->prepare("SELECT id, author, item, qte, type, DATE_FORMAT(datee, '%d/%m/%Y - %H:%i') AS datee FROM registre WHERE author=:author AND item=:item AND type=1");
$getprod_t->execute([ 'author' => $_SESSION['username'], 'item' => 3 ]);
$prod_t = $getprod_t->fetch();

// 先确认查询返回了有效结果
if ($prod_t !== false) {
    echo $prod_t['qte'];
} else {
    // 没有找到记录时的提示或处理逻辑
    echo "未找到匹配的记录";
}

2. 排查DATE_FORMAT导致查询无结果的原因

你提到移除DATE_FORMAT后代码正常,说明加了这个函数后,查询可能没有返回任何记录。建议你做以下调试:

  • 手动执行SQL语句:把占位符替换成实际值(比如$_SESSION['username']的真实内容),在MySQL客户端或phpMyAdmin里执行这条SQL:

    SELECT id, author, item, qte, type, DATE_FORMAT(datee, '%d/%m/%Y - %H:%i') AS datee FROM registre WHERE author='你的用户名' AND item=3 AND type=1;
    

    如果手动执行也没有结果,那说明今天的数据库里确实没有符合条件的记录;如果手动执行有结果,但PHP里返回false,那可能是数据库驱动的问题。

  • 检查datee字段的异常值:有没有可能今天新增的符合条件的记录中,datee字段是NULL或者格式不符合DATE_FORMAT的要求?虽然DATE_FORMAT处理NULL会返回NULL,但不会导致整个查询无结果,不过可以确认一下字段类型是否为DATETIME/TIMESTAMP。

  • 开启PDO异常模式排查错误:在数据库连接后添加这行代码,让PDO抛出具体的SQL异常,能帮你快速定位问题:

    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    

    如果SQL执行有任何错误,都会抛出异常,你就能看到具体的错误信息。

3. 关于别名的小提醒

你用DATE_FORMAT(datee, ...) AS datee把格式化后的字段重命名为原字段名,虽然MySQL允许这样做,但某些情况下可能导致字段值被覆盖(比如原datee字段和别名datee在结果集中只保留一个)。建议你把别名改成不同的名字,比如formatted_date:

SELECT id, author, item, qte, type, DATE_FORMAT(datee, '%d/%m/%Y - %H:%i') AS formatted_date FROM registre WHERE author=:author AND item=:item AND type=1;

这样也能避免潜在的键名冲突问题。

内容的提问来源于stack exchange,提问作者Arkanium _

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 19:43:10