【问题标题】:PDO fetchAll on non-object errorPDO fetchAll 非对象错误
【发布时间】:2013-01-23 18:12:16
【问题描述】:

我怎么会这样做:

<?php
$pdo  = new PDO("mysql:host=xxx;dbname=xxx", "xxx", "xxx");
$sql  = $pdo->query("call GetFromCoords($lat, $lng)");

$sql  = $pdo->query("call GetInRadius($zip, $dist)");
$rows = $sql->fetchAll(PDO::FETCH_ASSOC);

我收到此错误:

致命错误:在第 28 行的 /home/ryannaddyps/weblyize.com/Party/nearby.php 中的非对象上调用成员函数 fetchAll()

但是,如果我在新连接上运行第二个查询,它可以正常工作吗?

【问题讨论】:

  • $pdo 已经初始化了吗?
  • 是的,这是第一次。

标签: php pdo


【解决方案1】:

尝试使用nextRowset():

$pdo  = new PDO("mysql:host=xxx;dbname=xxx", "xxx", "xxx");
$sql  = $pdo->query("call GetFromCoords($lat, $lng)");

$sql->nextRowset(); // This

$sql  = $pdo->query("call GetInRadius($zip, $dist)");
$rows = $sql->fetchAll(PDO::FETCH_ASSOC);

【讨论】:

    【解决方案2】:

    您的 SQL 查询是否可能触发错误?根据manual,查询失败时PDO::query返回FALSE(即非对象)。

    启用error_reportingdisplay_errors 或使用PDO::ERRMODE_EXCEPTION 初始化连接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 2014-02-05
      • 2018-06-22
      • 2013-02-24
      相关资源
      最近更新 更多