Chiama una function membro fetch () su boolean

Ho ricevuto questo errore:

Errore irreversibile: chiamata a una function membro fetch () su boolean in C: \ xampp \ htdocs \ repo \ generator \ model \ database.php sulla linea 34

Quando eseguo questo codice:

class database { private $user = 'root'; private $pass = ''; public $pdo; public function connect() { try { $this->pdo = new PDO('mysql:host=localhost; dbname=generatordatabase', $this->user, $this->pass); echo 'Połączenie nawiązane!'; } catch(PDOException $e) { echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage(); } } public function createTable() { $q = $this->pdo -> query('SELECT * FROM article'); while($row = $q->fetch()) { echo $row['id'].' '; } $q->closeCursor(); } } ?> 

Come da manuale PHP per PDO :: query

PDO :: query () restituisce un object PDOStatement o FALSE in caso di errore.

Sembra che la tua query non stia riuscendo (sulla linea 33) e quindi restituisca un BOOLEAN (falso), probabilmente perché a quel punto in esecuzione, PDO non è connesso a un database che contiene una tabella chiamata articolo . Nel metodo connect () vedo che prova a connettersi a un db chiamato 'generatordatabase'; assicurati che questa connessione venga effettuata prima di call createTable (), altrimenti assicurati che contenga una tabella chiamata 'article'.

Vorrei raccomandare di aggiungere altri esempi di codice, ad esempio il codice che chiama questa class / metodo prima che l'errore venga triggersto.

Alcuni errori di gestione ti aiuteranno a evitare problemi come questo:

 $q = $this->pdo->query('SELECT * FROM article'); //error case if(!$q) { die("Execute query error, because: ". print_r($this->pdo->errorInfo(),true) ); } //success case else{ //continue flow }