1

我目前正在构建一个小而简单的推荐系统。但是,我在尝试返回单个用户拥有多少推荐时遇到了麻烦。当新用户注册时,它会存储在名为“referid”的列中,并且其中的 ID 对应于推荐他的用户名的 ID。

但是,在尝试查找在“referid”列中提及该用户 ID 的次数然后回显它时,我收到此错误:

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。

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

很感谢任何形式的帮助。

4

1 回答 1

5

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

$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");

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

PDOStatement PDO::prepare ( 字符串 $statement [, array $driver_options = array() ] )

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

echo($checknumber);

如果您查看手册中的任何使用示例,您会发现您需要调用其中一种PDOStatement方法来提取查询结果,例如:

<?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();

更新:另外两个链接:

于 2012-11-22T17:40:18.597 回答