Моя ошибка:
( ! ) 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']; }
Вместо:
$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 напрямую и посмотреть, что результат. Если это работает правильно, проблема может быть связана с кодом подключения к базе данных.