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

PDO执行查询无法获取结果 返回空白页面无任何报错提示

问题原因及修复方案

核心错误点

  • 未开启PDO错误上报:默认PDO不会主动抛出错误,运行时的致命错误被屏蔽导致页面空白
  • 取值方式和设置的返回格式不匹配:你配置了PDO::ATTR_DEFAULT_FETCH_MODE为PDO::FETCH_OBJ,查询结果会返回对象,但是代码中用数组下标$row['字段名']的方式取值,类型不匹配触发致命错误
  • 多余的fetch操作消耗了第一条数据:执行execute后先调用了一次fetch(),结果集指针直接移到第二条,若查询结果只有1条,后续循环不会输出任何内容

修复后的代码

// 初始化PDO时新增错误模式配置,开启异常抛出
$pdo_connect = new PDO($dsn, $db_host_admin_username, $db_host_admin_pass, [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
]);
$pdo_connect->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_OBJ);
$pdo_connect->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);

// 若不确定$bid_id是否正常赋值,可放开下一行调试
// var_dump($bid_id); exit;

$sql_property_info_request = "SELECT * FROM property_offered_bid WHERE bid_id_property_offered_bid=:bid_id";
$stmt_property_info_request = $pdo_connect->prepare($sql_property_info_request);
$stmt_property_info_request->execute(['bid_id' => $bid_id]);
// 移除多余的第一次fetch操作

// 取值改为对象属性方式,匹配FETCH_OBJ的返回格式
while ($row = $stmt_property_info_request->fetch()) {
    echo $row->property_offered_property_offered_bid."<br />\n";
}

如果习惯用数组形式读取字段,也可以将默认返回格式修改为PDO::FETCH_ASSOC,即可继续使用$row['字段名']的方式取值。

额外调试建议

如果修改后仍无输出,可以先打印查询匹配的总条数验证是否存在符合条件的数据:

echo $stmt_property_info_request->rowCount();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 23:06:01