Reputation: 534
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.
Upvotes: 1
Views: 2550
Reputation: 146450
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:
Upvotes: 5