首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可捕获的致命错误:在第30行,无法将类PDOStatement的对象转换为/home/refined/public_html/refer.php中的字符串

可捕获的致命错误:在第30行,无法将类PDOStatement的对象转换为/home/refined/public_html/refer.php中的字符串
EN

Stack Overflow用户
提问于 2012-11-23 01:32:30
回答 1查看 2.5K关注 0票数 1

我目前正在建立一个小而简单的推荐系统。然而,我在尝试返回一个用户有多少推荐人时遇到了问题。当一个新用户注册时,它存储在一个名为"referid“的列中,其中的ID对应于推荐他的用户名的ID。

但是,在尝试找出该用户的ID在"referid“列中被提到了多少次,然后回显它时,我得到了这个错误:

代码语言:javascript
复制
Catchable fatal error: Object of class PDOStatement could not be converted to string in /home/refined/public_html/refer.php on line 30

我不明白到底是什么导致了这种情况。我在谷歌上快速搜索了一下,发现PDO与字符串之类的东西不兼容。我以前不经常使用PHP和MYSQL,所以我不确定如何“不”使用PDO。

代码语言:javascript
复制
<?php
$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");
$checknumber -> execute(array(':ID' => $_SESSION['ID']));
echo($checknumber);
?>

任何帮助都是非常感谢的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 01:40:19

让我们分析一下你的代码:

代码语言:javascript
复制
$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");

..。其中,PDO::prepare()定义为:

数组数组PDO::prepare ( string $statement,

PDOStatement $driver_options =$statement())

所以它返回一个对象。但是两行之后,您尝试打印该对象:

代码语言:javascript
复制
echo($checknumber);

如果您检查手册中的任何用法示例,您将看到您需要调用其中一个PDOStatement方法来提取查询结果,例如:

代码语言:javascript
复制
<?php
/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();

更新:另外两个链接:

  • Available PDOStatement methods
  • Arrays in PHP
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13517621

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档