我目前正在建立一个小而简单的推荐系统.但是,我无法尝试返回单个用户拥有的推荐数量.当新用户注册它时,它存储在名为"referid"的列中,并且那里的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
Run Code Online (Sandbox Code Playgroud)
我无法理解究竟是什么导致了这一点.我做了一个快速谷歌,我只能看到PDO与字符串或其他东西不兼容.我之前没有使用过PHP和MYSQL,所以我不确定如何"不"使用PDO.
<?php
$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");
$checknumber -> execute(array(':ID' => $_SESSION['ID']));
echo($checknumber);
?>
Run Code Online (Sandbox Code Playgroud)
很感谢任何形式的帮助.
让我们分析你的代码:
$checknumber = $odb -> prepare("SELECT COUNT('referid') FROM `users` WHERE `ID` = :ID");
Run Code Online (Sandbox Code Playgroud)
...其中PDO :: prepare()定义为:
PDOStatement PDO :: prepare(string $ statement [,array $ driver_options = array()])
所以它返回一个对象.但是两行后你尝试打印对象:
echo($checknumber);
Run Code Online (Sandbox Code Playgroud)
如果您检查手册中的任何用法示例,您将看到需要调用其中一种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();
Run Code Online (Sandbox Code Playgroud)
更新:另外两个链接: