【问题标题】:Php function error (Object of class PDOStatement)PHP 函数错误(PDOStatement 类的对象)
【发布时间】:2017-04-21 20:46:26
【问题描述】:

你的问题在哪里?

错误:可捕获的致命错误:PDOStatement 类的对象无法转换为字符串

DB类中的sp函数;

function sp()
{
    $this->baglantiAc();
    $query = $this->db->prepare("DECLARE @key nvarchar(50); EXEC [dbo].[get_next_UniqueNumber] @key_lenght = 50, @key = @key OUTPUT; SELECT @key as lkey");
    $query->execute();
    $query->nextRowset();
    $this->baglantiKapat();
    //var_dump($query->fetch(PDO::FETCH_ASSOC));
    $query->fetch(PDO::FETCH_ASSOC);
    return $query;

}

我正在这样调用页面,但出现错误。

$DB = new DB_Class();
$row = $DB->sp();
echo $row;

【问题讨论】:

  • 回声 $row;是完整的对象,你不能直接访问。检查通过 print_r($row);
  • 当我执行 print_r ($ row) 时,结果查询
  • 你得到什么回应:var_dump($query->fetch(PDO::FETCH_ASSOC));
  • 当我使用 var_dump ($ query-> fetch (PDO :: FETCH_ASSOC)) 时,我得到了我想要的结果。我无法从函数中得到结果:)

标签: php function pdo


【解决方案1】:

我建议用 var_dump 删除评论,看看你得到了什么。查询似乎有问题,我可以看到length 至少有一个错字。

另外,query 是您试图回显的 PDOStatement 对象。 如果您想获得 fetch 的响应,我建议您这样做:

function sp()
{
     $this->baglantiAc();
     $query = $this->db->prepare("DECLARE @key nvarchar(50); EXEC [dbo].[get_next_UniqueNumber] @key_length = 50, @key = @key OUTPUT; SELECT @key as lkey");
     $query->execute();
     $query->nextRowset();
     $this->baglantiKapat();
     //var_dump($query->fetch(PDO::FETCH_ASSOC));
     $response = $query->fetch(PDO::FETCH_ASSOC);
     return $response;
}

$DB = new DB_Class();
$row = $DB->sp();
print_r($row);

【讨论】:

  • OK,显示“数组([lkey] => 00000000000000000000000000000000000000000000000WE0)”$DB = new DB_Class(); $row = $DB->sp(); foreach ($row as $key => $val) { echo $val; }
【解决方案2】:

$queryPDOStatement 类型的对象。

执行$query->fetch(PDO::FETCH_ASSOC); 意味着fetch results from PDOStatement。但是您没有将此返回的结果分配给变量。所以你的代码应该是:

    // $query->fetch(PDO::FETCH_ASSOC)
    // return $query;
    return $query->fetch(PDO::FETCH_ASSOC);
}   // end of function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-08
    • 2019-07-04
    • 2021-08-03
    • 1970-01-01
    • 2015-02-08
    • 2021-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多