将对象转换为字符串 - php pdo

时间:2014-11-26 12:50:25

标签: php mysql pdo

我正在抓取一些数据并尝试将其打印到页面,但我收到以下错误 -

PHP Catchable fatal error:  Object of class PDOStatement could not be converted to string

这是我的查询功能;

function query($query, $bindings, $conn)
{
    $stmt = $conn->prepare($query);
    $stmt->execute($bindings);

    return $stmt;
}

查询并打印到页面;

$testimonials = query ('SELECT * FROM testimonials ORDER BY id = :id DESC LIMIT 1', 
                        array('id' => ['id']), $conn);

print $testimonials;

我不确定如何在不重写函数的情况下将其转换为字符串,或者我应该这样做?

3 个答案:

答案 0 :(得分:1)

您实际上并未返回任何结果,而是返回PDO对象

更改回报
return $stmt;

return $stmt->fetchAll(PDO::FETCH_ASSOC);

这将返回多个结果(如果可用)

return $stmt->fetch(PDO::FETCH_ASSOC);

将返回单个结果

<强>更新

要回答您的评论,您可以使用

return ($stmt->rowCount() > 0) ? $stmt->fetchAll(PDO::FETCH_ASSOC) : false;

注意:这将返回一个数组,这意味着你需要访问数组来打印你想要的东西..你可以这样做:

foreach( $testimonials as $testimonial )
{
    print( $testimonial['field_name_from_database'] );
}

答案 1 :(得分:0)

它应该是,

print_r($testimonials);

答案 2 :(得分:0)

出于调试/测试目的,最好使用var_dump(),它提供带有附加信息(类型,长度)的html格式化输出,并递归地工作。

您还返回一个PDOStatement对象,它是一个尚未执行的准备好的请求。你需要它来获取结果(fetch或fetchAll)。

PHP:

function query($query, $bindings, $conn)
{
    $stmnt = $conn->prepare($query);
    $stmt->execute($bindings);
    return $stmt->fetchAll();
}