Intereting Posts

PDO – вызов функции-члена функции fetch () для объекта без объекта

Моя ошибка:

( ! ) Fatal error: Call to a member function fetch() on a non-object in C:\wamp\www\PDO\index.php on line 13

Мой код:

 <?php $config['db'] = array( 'host' => 'localhost', 'username' => 'root', 'password' => '', 'dbname' => 'learnpdo' ); $db = new PDO('mysql:host='.$config['db']['host'].';dbname'.$config['db']['dbname'], $config['db']['username'], $config['db']['password']); $query = $db->query("SELECT articles . title FROM articles"); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo $row['title']; } 

Я знаю, что таких вопросов много, но ни один из ответов не работает.

благодаря


РЕДАКТИРОВАТЬ:

Выше фиксировано, спасибо всем ниже. 🙂 Теперь я получаю еще одну ошибку:

Notice: Undefined index: id in C:\wamp\www\PDO\index.php on line 7

Вот моя база данных:

http://d.pr/i/vcod

Вот мой код:

 $db = new PDO('mysql:host=localhost;dbname=learnpdo;charset=UTF-8', 'root', ''); $query = $db->query("SELECT `articles`.`title` FROM `articles`"); while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo $row['id']; } 

Solutions Collecting From Web of "PDO – вызов функции-члена функции fetch () для объекта без объекта"

Вместо:

 $query = $db->query("SELECT articles . title FROM articles"); 

Пытаться:

 $query = $db->query("SELECT title FROM articles"); 

редактировать

Пытаться:

 while ($row = $query->fetch(PDO::FETCH_ASSOC)) { echo $row['title']; } 

PDO::query() возвращает false (который, очевидно, является не объектом), если запрос завершается с ошибкой. Так вот в чем проблема. У вашего запроса есть ошибка.

Я рекомендую вам установить режим ошибок в PDO.

 $db->setAttribute(PDO::ATTR_ERRMODE, PDO:ERRMODE_EXCEPTION); 

а затем поймать ошибку, чтобы узнать, что не так с вашим запросом.

Существуют различные PDO::ERRMODE_SILENT ошибок: PDO::ERRMODE_SILENT , PDO::ERRMODE_WARNING и PDO:ERRMODE_EXCEPTION . Вы можете прочитать о них в руководстве PHP по PDO . Знать, как отлаживать при написании SQL важно, и ключ к тому, чтобы не задавать такие вопросы.

О вашей другой проблеме

Вы должны выбрать столбец идентификатора, если хотите его использовать.

 SELECT * FROM articles 

или

 SELECT id, title FROM articles 

Эта ошибка почти всегда означает, что ваш запрос не работал так, как вы этого хотели, и в результате $ query имеет значение null (или false?), А не объект результата запроса. Попробуйте повторить db->errorinfo() и посмотрите, не сообщает ли он, что пошло не так.

Вы также можете попробовать вставить текст своего запроса в mysql напрямую и посмотреть, что результат. Если это работает правильно, проблема может быть связана с кодом подключения к базе данных.