我正在抓取一些数据并尝试将其打印到页面,但我收到以下错误 -
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;
我不确定如何在不重写函数的情况下将其转换为字符串,或者我应该这样做?
答案 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();
}