Я получаю эту ошибку:
Неустранимая ошибка: вызов функции-члена fetch () в boolean в C: \ xampp \ htdocs \ repo \ generator \ model \ database.php в строке 34
Когда я запускаю этот код:
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(); } } ?>
Согласно руководству PHP для PDO :: query
PDO :: query () возвращает объект PDOStatement или FALSE при сбое.
Похоже, что ваш запрос не работает (в строке 33) и, таким образом, возвращает BOOLEAN (false), вероятно, потому что в тот момент выполнения PDO не подключился к базе данных, которая содержит таблицу, называемую статьей . В методе connect () я вижу, что он пытается подключиться к db, называемому 'generatordatabase'; убедитесь, что это соединение выполняется до вызова createTable (), в противном случае убедитесь, что он содержит таблицу под названием «статья».
Я бы рекомендовал добавить еще несколько примеров кода, например код, вызывающий этот класс / метод до того, как будет запущена ошибка.
Некоторая обработка ошибок поможет вам избежать таких проблем:
$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 }