PDO - не работает подготовленное выражение SELЕCT

Елисеев

Новичок
Доброго времени суток, уважаемые форумчане. Я только начал пользоваться PDO классом, и не знаю еще всех тонкостей работы с ним. По этому столкнулся с проблемой и ищу у Вас поддержки и решения проблемы:

Код на страничке:

$pdo=$DB->connect(); // Подключение к бд. Получает данные из класса.
$res = $pdo->prepare('SELECT * FROM menu where category = ?');
$res = $res->execute(array("main"));
while ($row = $res->fetch(PDO::FETCH_ASSOC)) // СТРОЧКА ОШИБКИ
{print_r($row); }

Ошибка:
Fatal error
: Call to a member function fetch() on a non-object in ..............ФАЙЛ с указанием строчки ОШИБКИ

БазаДанных:
В Базе существует таблица с такой колонкой. Данные в ней есть. Выборка работает, если использовать обычный метод $pdo->query() и не пользоваться подготовленными выражениями.

Перепробовал и вариант именной замены :nameVar. Пробовал и через замену переменной с помощью bindParam(). Пробовал и заранее подготавливать массив перед заменой в execute().Все равно ошибка остается как и прежде.
Использовал класс PDO для иных sql запросов. Проблем не возникало и все работало. Начинаю использовать запросы с оператором SELECT - и ничего не получается.

Помогите, пожалуйста, в решении данной проблемы. А то на месте топчусь и в решении проблемы самостоятельно не продвинулся. Заранее благодарен за потраченное Вами время.
 
Последнее редактирование:

Елисеев

Новичок
Мануалы я читал. Либо я невнимателен, либо у меня код соответствует коду из мануалов. Мне бы хотелось услышать еще и комментарии и правильное решение к моему коду, чтобы раз и навсегда разобраться с непониманием.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@Елисеев, правильно - пойти и почитать руководство (книгу), сравнить свой код и тот, что написан там. В частности понять, что execute возвращает булево значение, которое никак не может быть объектом.

Убери в $res = $res->execute(array("main")); часть, где написано $res =
 
Сверху