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

    +155

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    $sqlQuery = trim(str_replace("\n", ' ', $sqlQuery));
    $sqlQuery = trim(str_replace("\r", ' ', $sqlQuery));
    $sqlQuery = trim(str_replace("\r\n", ' ', $sqlQuery));
    $sqlQuery = trim(str_replace("\t", ' ', $sqlQuery));
    
    $len = strlen($sqlQuery);
    $type = '';
    $i = 0;
    
    while ($i < $len && $sqlQuery{$i} != ' ') {
    	$type .= $sqlQuery{$i};
    	$i++;
    }
    
    $type = strtoupper($type);

    Получение типа запроса (SELECT, UPDATE и т.д. из строки запроса)

    Запостил: Homess, 02 Декабря 2013

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

    • > Получение типа запроса

      Но зачем?
      Ответить
      • Что бы знать, чего вызывать query или exec
        Ответить
        • А не лучше ли в таком случае сделать 2 функции или флаг на худой конец? :)

          Вызывающий то обязан знать, какой тип запроса он делает. Ему же потом как-то с результатом этого select'а работать... А если он делает insert, то он же не будет пытаться читать из результата записи? В общем я не вижу особого смысла в детекте типа запроса.
          Ответить
          • Вызывающий знает но между вызывающим и СУБД может стоять прослойка с жирным куском абстракции которая скрывает всю кухню. В которой собирается sql и передается на выполнение, так вот особенно разницы где анализировать как выполнять query или exec запрос внутри обертки "query" или до особенно разницы я не вижу. В любом случае пользователь получит не результат запроса или запросов а какой то результат описанный бизнес правилами.
            Ну как то так я думаю.
            Ответить
            • Ну тогда эта жирная обертка знает, будет ли она вставлять записи или выбирать. Иначе она тупо не сможет работать :) И ей не надо ничего анализировать. Если юзер просит зарегать новый документ - она уже знает, что это insert, и значит exec. Если юзер просит найти продажи за 5 декабря - она знает, что это будет select, и что надо делать query. Смысла в костыльном детекте запроса по первому слову нет.
              Ответить
            • Т.е. на этапе построения запроса уже понятно, будет ли это модификация или выборка. Нет смысла выпарсивать эту инфу из построенного запроса.

              Ну разве что запрос вводит руками сам юзер ;)
              Ответить
              • Это кусок класса работы с БД. Этот чудо-код нужен исключительно для получения статистики по количеству тех или иных запросов. В БД запрос уходит в любом случае через mysql_query
                Ответить
              • Да Вы правы. Что то я себе на фантазировал.
                Ответить

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