2013-05-01 2 views
1

Я знаю, что здесь есть несколько других вопросов с этим заголовком, но они кажутся конкретными для случая, или я просто не могу обернуть вокруг себя голову, но я получаю это ошибка в этом коде, и я не могу понять, почему.Звонок на неопределенный метод PDO :: fetch()

$db = new PDO($dsn, $username, $password); 
$query = "Select * FROM book INNER JOIN course 
      ON book.course = course.courseID 
      ORDER BY courseTitle"; 

//query result 
$books = array(); 
$sth = $db->query($query); 
while($row = $db->fetch(PDO::FETCH_ASSOC)) { 
    $books[] = $row; // appends each row to the array 
} 

Я думал, может быть мой запрос был неправ, так что я попробовал пример из PDO учебника, и я получил тот же тип ошибки. Есть ли что-то, что я должен объявить, или я что-то оставляю?

+2

'fetch' на' $ sth', а не на '$ db'. – deceze

+0

Я изменил на $ sth, теперь я получаю «Вызов функции-члена fetch() для не-объекта» ошибка – john

+1

[Ошибка PDO-запроса, но я не вижу никаких ошибок. Как получить сообщение об ошибке из PDO?] (Http://stackoverflow.com/questions/15990857/reference-frequently-asked-questions-about-pdo#15990858) – DCoder

ответ

7

Вы должны использовать $ sth вместо $ db при использовании PDO-функций, относящихся к запросу на наборе результатов из запроса.

$db = new PDO($dsn, $username, $password); 
$query = "Select * FROM book INNER JOIN course 
ON book.course = course.courseID 
ORDER BY courseTitle"; 

//query result 
$books = array(); 
$sth = $db->query($query); 
while($row = $sth->fetch(PDO::FETCH_ASSOC)) { 
    $books[] = $row; // appends each row to the array 
} 

При отладке PDO. Добавьте эту строку после создания PDO-объект:

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

Тогда исключения будут отброшены, когда есть ошибки в запросе/запросах.

+1

Ну, '$ db' * также * объект PDO, на котором вы можете использовать« функции PDO »... – deceze

+0

эй лучше всего, спасибо за ответ, я внес изменения, которое вы предоставили, и теперь я получаю эту ошибку. «Вызов функции-члена fetch() для не-объекта» - это не объект-член? – john

+0

@deceze - ах, я знаю, я объяснил это довольно плохо. Может быть, теперь это более ясно? – bestprogrammerintheworld

Смежные вопросы