@khodos_dmitry

Почему возникает ошибка Call to a member function fetch() on boolean?

Есть такой код:
$pdo_link->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
	$stm = $pdo_link->prepare("SELECT `id`, `name`, `url`, `address` FROM `cpl_offices` WHERE `url` LIKE ? AND `bank_id` IS NULL AND `mfo_id` IS NULL AND `del` IS NULL LIMIT ?, ?");
	$offices = $stm->execute([$url_like, $limit_from, $per_page]);
	while ($office = $offices->fetch()) {

Ошибка возникает там, где while.
Я скопировал данный запрос из логов и выполнил напрямую. Он выполняется нормально, возвращает много строк.
  • Вопрос задан
  • 3791 просмотр
Решения вопроса 1
Vlad_IT
@Vlad_IT
Front-end разработчик
Метод execute возвращает boolean, следовательно, в $offices булевое значение, а вы его пытаетесь вызвать как функцию.
Вот так должно работать

$pdo_link->setAttribute(PDO::ATTR_EMULATE_PREPARES, FALSE);
  $stm = $pdo_link->prepare("SELECT `id`, `name`, `url`, `address` FROM `cpl_offices` WHERE `url` LIKE ? AND `bank_id` IS NULL AND `mfo_id` IS NULL AND `del` IS NULL LIMIT ?, ?");
  $stm->execute([$url_like, $limit_from, $per_page]);
  while ($office = $stm->fetch()) {
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Compolomus
@Compolomus Куратор тега PHP
Комполом-быдлокодер
Лимит не попадает под подготовленные выражения
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы