1. PHP / Говнокод #16447

    +155

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    $q=mysql_query($que.$limit)or die(mysql_error());
    $numr=mysql_num_rows($q);
    $q2 = mysql_query($que)or die(mysql_error());
    $numrows = mysql_num_rows ($q2);
    $pages = ceil($numrows/$step);

    Здесь: $que - тяжелый SQL-запрос, который собирался в течение предыдущих сотен строк (десятки IF... ELSE...). $limit - лимит: выбрать 30 записей с такой по этакую. Чтобы орагнизовать на сайте пагинацию, автор выполняет запрос $que дважды. Во второй раз - чтобы просто посчитать общее число записей. При этом в MySQL второй запрос убивается парой SELECT SQL_CALC_FOUND_ROWS... / SELECT FOUND_ROWS().

    Запостил: Khvorostin, 30 Июля 2014

    Комментарии (6) RSS

    • Тут ГК уже хотя бы в том, что запросы создаются конкатенацией строк.
      Ответить
      • В любом фреймворке собираются через конкатенацией строк, а как по другому делать в сложных SQL запросах?
        Ответить
        • Типобезопасными запросами. Criteria, QueryDSL, вот это всё. Но не знаю, есть ли такое в PHP.
          Ответить
    • >>$que - тяжелый SQL-запрос, который собирался в течение предыдущих сотен строк

      Боюсь представить ER модель этой базы
      Ответить

    Добавить комментарий