Catchable fatal error: Object of class PDOStatement could not be converted to string in /home/refined/public_html/refer.php on line 30

匿名 (未验证) 提交于 2019-12-03 02:35:01

问题:

I currently am building a small and simple referral system. However I am having trouble trying to return how many referrals one single user has. When a new user registers it stores in a column called "referid" and that ID in there correspond to the ID of the username who referred him.

However, upon attempting to find how many times that user's ID is mentioned in the "referid" column and then echoing it, I get this error:

Catchable fatal error: Object of class PDOStatement could not be converted to string in /home/refined/public_html/refer.php on line 30 

I cant understand what's actually causing this. I did a quick google and all I could see was that PDO isn't compatible with strings or something. I haven't used PHP and MYSQL together that much before so I'm not sure how to "not" use PDO.

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

Any help is very much appreciated.

回答1:

Let's analyse your code:

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

... where PDO::prepare() is defined as:

PDOStatement PDO::prepare ( string $statement [, array $driver_options = array() ] )

So it returns an object. But two lines later you try to print the object:

echo($checknumber); 

If you check any of the usage examples in the manual you'll see that you need to call one of the PDOStatement methods to extract the query results, e.g.:

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

Update: Two more links:



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!