-3

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.

  • please do a research before posting. Your problem is that your `$q` variable is false. – Giacomo M Aug 16 '19 at 19:21
  • @GiacomoM I know that it is false because the query failed. I just don't know how to make it return the object. I state this in the question. – spellcasterGG Aug 16 '19 at 19:23

1 Answers1

-1

if your $q is false its mean you have error in sql query or a connection, you can use this connection to see more info about your error:

$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password, [PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION]);

then it will throw exception before you try to access (bool)->{someMethod}

Dharman
  • 30,962
  • 25
  • 85
  • 135
Eli Meiler
  • 59
  • 4
  • It now throws the error: Could not connect to the database *******_literature :SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty – spellcasterGG Aug 16 '19 at 20:06