pager_query и точка с запятой

Делаю модуль с постраничным выводом данных в виде таблицы. Данные из mysql извлекаются с помощью pager_query. И что-то у меня не хочет работать. Помучился немного, потом нашёл, что drupal оказывается отсылает следующий запрос к СУБД:

SELECT name, COUNT(*) AS c FROM m_redirect, m_stat WHERE id=rid GROUP BY id; ORDER BY name ASC LIMIT 0, 10;

Виной оказалась запятая перед ORDER BY. Я привык работая в консоли mysql все запросы заканчивать точкой с запятой - иначе нельзя, не будет работать. Я знал, что в php (и в Drupal тоже) sql-запросы необязательно заканчивать точкой с запятой - будет работать так и так. Поэтому раньше я о таких вещах как-то не задумывался.
В данном случае проблема вылезла наружу. pager_query дополняет запрос, указанный в параметрах, с помощью конструкции ORDER BY .. LIMIT ... - обеспечивая отбор данных нужных именно на этой странице и их сортировку. В результате и получился запрос в середине которого вклинилась незапланированная точка с запятой. Раньше то я похоже ленился в pager_query ставить этот знак препинания, но сейчас я этот запрос скопировал прямо из консоли, в которой его отлаживал, и ошибка вылезла наружу.
В общем вывод - надо формировать новую привычку.
P.S. Интересно, есть ли в drupal какой-нибудь хук, с помощью которого можно перехватить запрос и и убрать лишнюю точку с запятой?

Ссылки с других сайтов

Пока ничего нет
Tags:

Комментарии:

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступны HTML теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd><h2><h3><img><p><b><img>
  • Строки и параграфы переносятся автоматически.
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Each email address will be obfuscated in a human readable fashion or (if JavaScript is enabled) replaced with a spamproof clickable link.

Подробнее о форматировании

2 + 2 =
Вычислите и введите результат. Для вопроса "2+3" ответом будет "5".
Синдикация материалов