This question already has an answer here:
- My PDO Statement doesn't work 1 answer
I understand that this error occurs when you try to call a method on something that is not an object. In this case, the variable that should hold an object is actually a boolean.
I just don't know how to fix it.
If you look at MySQL::query(), the function returns either false (on error) or an object of the type mysql_result. A bad SQL query will make the query fail and the function to return false.
Because the error occurs when I try to call setFetchMode, it probably means my PDO query failed, but I honestly have no idea.
<?php
$host = 'localhost';
$dbname = 'DBNAME';
$username = 'USERNAME';
$password = 'PASSWORD';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$sql = 'SELECT id, topic, category, type, doi, author, year
FROM literature
ORDER BY id';
$q = $pdo->query($sql);
$q->setFetchMode(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
die("Could not connect to the database $dbname :" . $e->getMessage());
}
?>
It returns the error: "PHP Fatal error: Uncaught Error: Call to a member function setFetchMode() on boolean in /root/somewhere/somefile/anotherfile/FILENAME.php:12" because $q is false. I just don't know how to have it return the object.
The weird part is that it works perfectly fine on my stand-alone server.
</div>