mysql_real_escape_string / Говнокод #699 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
SELECT BE.SORT as SORT,BE.ID as ID,DATE_FORMAT(BE.TIMESTAMP_X, '%d.%m.%Y %H:%i:%s') as TIMESTAMP_X,BE.MODIFIED_BY as
 MODIFIED_BY,DATE_FORMAT(BE.DATE_CREATE, '%d.%m.%Y %H:%i:%s') as DATE_CREATE,BE.CREATED_BY as CREATED_BY,BE.IBLOCK_ID as
 IBLOCK_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,BE.ACTIVE as ACTIVE,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0,
 DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as
 ACTIVE_TO,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_FROM)>0, DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y %H:%i:%s'),
 DATE_FORMAT(BE.ACTIVE_FROM, '%d.%m.%Y')) as DATE_ACTIVE_FROM,IF(EXTRACT(HOUR_SECOND FROM BE.ACTIVE_TO)>0, DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y %H:%i:%s'), DATE_FORMAT(BE.ACTIVE_TO, '%d.%m.%Y')) as DATE_ACTIVE_TO,BE.NAME as NAME,BE.PREVIEW_PICTURE as 
 PREVIEW_PICTURE,BE.PREVIEW_TEXT as PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.DETAIL_PICTURE as
 DETAIL_PICTURE,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,BE.SEARCHABLE_CONTENT as
 SEARCHABLE_CONTENT,BE.WF_STATUS_ID as WF_STATUS_ID,BE.WF_PARENT_ELEMENT_ID as WF_PARENT_ELEMENT_ID,BE.WF_NEW as WF_NEW,if (BE.WF_DATE_LOCK is null, 'green', if(DATE_ADD(BE.WF_DATE_LOCK, interval 60 MINUTE)<now(), 'green', if(BE.WF_LOCKED_BY=0, 'yellow', 'red'))) as LOCK_STATUS,BE.WF_LOCKED_BY as WF_LOCKED_BY,DATE_FORMAT(BE.WF_DATE_LOCK, '%d.%m.%Y %H:%i:%s') as
 WF_DATE_LOCK,BE.WF_COMMENTS as WF_COMMENTS,BE.IN_SECTIONS as IN_SECTIONS,BE.SHOW_COUNTER as SHOW_COUNTER,BE.SHOW_COUNTER_START as
 SHOW_COUNTER_START,BE.CODE as CODE,BE.TAGS as TAGS,BE.XML_ID as XML_ID,BE.XML_ID as EXTERNAL_ID,BE.TMP_ID as
 TMP_ID,concat('(',U.LOGIN,') ',ifnull(U.NAME,''),' ',ifnull(U.LAST_NAME,'')) as USER_NAME,concat('(',UL.LOGIN,') ',ifnull(UL.NAME,''),' ',ifnull(UL.LAST_NAME,'')) as LOCKED_USER_NAME,concat('(',UC.LOGIN,') ',ifnull(UC.NAME,''),' ',ifnull(UC.LAST_NAME,'')) as CREATED_USER_NAME,L.DIR as LANG_DIR,B.LID as LID,B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,B.CODE as
 IBLOCK_CODE,B.NAME as IBLOCK_NAME,B.XML_ID as IBLOCK_EXTERNAL_ID,B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,B.LIST_PAGE_URL as
 LIST_PAGE_URL FROM b_iblock B INNER JOIN b_lang L ON B.LID=L.LID INNER JOIN b_iblock_element BE ON BE.IBLOCK_ID = B.ID INNER JOIN b_iblock_property FP1 ON FP1.IBLOCK_ID=B.ID AND FP1.CODE='DAY' INNER JOIN b_iblock_element_property FPV1 ON
 FP1.ID=FPV1.IBLOCK_PROPERTY_ID AND FPV1.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property_enum FPEN1 ON FP1.ID = FPEN1.PROPERTY_ID AND FPV1.VALUE_ENUM=FPEN1.ID INNER JOIN b_iblock_property FP2 ON FP2.IBLOCK_ID=B.ID AND FP2.CODE='MONTH' INNER JOIN
 b_iblock_element_property FPV2 ON FP2.ID=FPV2.IBLOCK_PROPERTY_ID AND FPV2.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property_enum FPEN2 ON FP2.ID = FPEN2.PROPERTY_ID AND FPV2.VALUE_ENUM=FPEN2.ID LEFT JOIN b_user U ON U.ID=BE.MODIFIED_BY LEFT JOIN b_user UL ON
 UL.ID=BE.WF_LOCKED_BY LEFT JOIN b_user UC ON UC.ID=BE.CREATED_BY WHERE 1=1 AND B.ID IN (0,72) AND ( (BE.WF_STATUS_ID=1 AND
 BE.WF_PARENT_ELEMENT_ID IS NULL) ) AND ((((BE.IBLOCK_ID = '72')))) AND (((BE.ACTIVE_TO >= now() OR BE.ACTIVE_TO IS NULL) AND
 (BE.ACTIVE_FROM <= now() OR BE.ACTIVE_FROM IS NULL))) AND ((((BE.ACTIVE='Y')))) AND (BE.IN_SECTIONS ='N' ) AND ((((FPEN1.VALUE LIKE
 '-1')))) AND ((((FPEN2.VALUE LIKE 'Март')))) ORDER BY BE.SORT asc

Вот что бывает когда человека заменет скрипт, причем написаные тупым человеком, ORM рулить.

Запостил: guest guest, (Updated )

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

  • Говногость:
    И че тут не так?
    Неужто в динамически сгенеренных запросах надо форматирование соблюдать?
    Ответить
  • zerkms:
    поддержу предыдущего оратора: какая разница как выглядит запрос? главное, чтобы был хороший план выполнения.
    Ответить
  • [quote=zerkms]главное, чтобы был хороший план[/quote]
    этого достаточно 🙂
    Ответить
  • Sam:
    Ну, план-то был хорош, судя по запросу :))
    Ответить
  • FlameS:
    [quote=Говногость]И че тут не так?[/quote]
    Что-то тут не так... 🙂

    А именно - то, как решена поставленная задача. И форматирование ни при чём тут вобщем-то.

    Ну а задача вкратце тут - выборка сущностей (одного типа), подпадающих под условие.


    Реализация:

    1.
    Производится выборка из мегатаблицы b_iblock_element совместно с b_iblock_element_property, а так же используя информацию из таблиц b_iblock с b_iblock_property и b_iblock_property_enum...

    2.
    Также выбирается инфа о юзерах (из таблицы b_user), создававших эти сущности (не факт, что она используется далее)
    Кроме того, в запросе участвует таблица b_lang, которая в битриксе отвечает толи за многоязыковость, толи за многосайтовость (пофигу).

    3. Ну и сама реализация запроса отпадна.

    ________________________________________ _
    PS:
    Ребята, ваяющие битрикс, оглянитесь.
    И нахрена же нам три куба леса перед ногами, лесоповальщик и бензопила с прилагающейся канистрой бензина, если мы попросили только спичек покурить?
    Ответить
  • Roman:
    Если вы работаете с Oracle так делать нельзя
    WHERE 1=1

    Почему - читаем книгу Дяди Тома...
    Ответить
  • cheef:
    меня одного смущает капслок?

    [quote= Roman]WHERE 1=1[/quote]
    такое, кстати и в CakePHP имеет место быть..
    Ответить
  • ГОСТЬ:
    >>меня одного смущает капслок?

    а у нас копроративный стандарт. все что SQL все большими буквами. кто не придерживается - того бьют головой об батарею

    ЗЫ: код не мой, я просто разместил комент 🙂
    Ответить
  • Кроме того, обратите внимание на "трюк" where 1 = 1. Благодаря ему я могу просто добавлять к запросу ноль, один или более предикатов, не затрудняясь проверкой необходимости добавления предложения WHERE или условия AND. У меня всегда есть предложение WHERE, поэтому мне нужно только добавить условия AND. (c) Том Кайт.

    Чет я не понял, чего это так делать нельзя?!?
    Ответить
    • пиздеть вас нужно ногами мистер Том Кайт не затрудняясь проверкой живы ли вы еще или нет.
      Ответить
      • Очень продуктивно и конструктивно!!! Или остались только стереотипы и воспоминания что так делать нельзя, а вот почему - а хрен его...
        Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8