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

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
  21. 21
  22. 22
  23. 23
  24. 24
  25. 25
  26. 26
  27. 27
  28. 28
  29. 29
  30. 30
  31. 31
  32. 32
  33. 33
  34. 34
  35. 35
  36. 36
  37. 37
  38. 38
  39. 39
  40. 40
  41. 41
  42. 42
  43. 43
  44. 44
  45. 45
  46. 46
  47. 47
  48. 48
  49. 49
  50. 50
  51. 51
  52. 52
  53. 53
  54. 54
  55. 55
  56. 56
  57. 57
  58. 58
  59. 59
  60. 60
  61. 61
  62. 62
  63. 63
  64. 64
  65. 65
  66. 66
  67. 67
  68. 68
  69. 69
  70. 70
  71. 71
  72. 72
  73. 73
  74. 74
  75. 75
  76. 76
  77. 77
  78. 78
  79. 79
  80. 80
  81. 81
  82. 82
  83. 83
  84. 84
  85. 85
  86. 86
  87. 87
  88. 88
SELECT DISTINCT BE.ID as ID,BE.NAME as NAME,BE.CODE as CODE,BE.IBLOCK_ID as
IBLOCK_ID,BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,B.DETAIL_PAGE_URL as
DETAIL_PAGE_URL,BE.DETAIL_TEXT as DETAIL_TEXT,BE.DETAIL_TEXT_TYPE as
DETAIL_TEXT_TYPE,BE.DETAIL_PICTURE as DETAIL_PICTURE,BE.PREVIEW_TEXT as
PREVIEW_TEXT,BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,BE.PREVIEW_PICTURE as
PREVIEW_PICTURE,L.DIR as LANG_DIR,BE.XML_ID as EXTERNAL_ID,B.IBLOCK_TYPE_ID as
IBLOCK_TYPE_ID,B.CODE as IBLOCK_CODE,B.XML_ID as IBLOCK_EXTERNAL_ID 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_section_element BSE ON
BSE.IBLOCK_ELEMENT_ID = BE.ID INNER JOIN b_iblock_section BSubS ON
BSE.IBLOCK_SECTION_ID = BSubS.ID INNER JOIN b_iblock_section BS ON
(BSubS.IBLOCK_ID=BS.IBLOCK_ID AND BSubS.LEFT_MARGIN>=BS.LEFT_MARGIN AND
BSubS.RIGHT_MARGIN<=BS.RIGHT_MARGIN) INNER JOIN b_iblock_property FP1 ON
FP1.IBLOCK_ID=B.ID AND FP1.CODE='code2' 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 FP2 ON FP2.IBLOCK_ID=B.ID AND FP2.CODE='code3' 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 FP3 ON
FP3.IBLOCK_ID=B.ID AND FP3.CODE='code4' INNER JOIN b_iblock_element_property
FPV3 ON FP3.ID=FPV3.IBLOCK_PROPERTY_ID AND FPV3.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP4 ON FP4.IBLOCK_ID=B.ID AND FP4.CODE='code5' INNER
JOIN b_iblock_element_property FPV4 ON FP4.ID=FPV4.IBLOCK_PROPERTY_ID AND
FPV4.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP5 ON
FP5.IBLOCK_ID=B.ID AND FP5.CODE='code7' INNER JOIN b_iblock_element_property
FPV5 ON FP5.ID=FPV5.IBLOCK_PROPERTY_ID AND FPV5.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP6 ON FP6.IBLOCK_ID=B.ID AND FP6.CODE='code9' INNER
JOIN b_iblock_element_property FPV6 ON FP6.ID=FPV6.IBLOCK_PROPERTY_ID AND
FPV6.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP7 ON
FP7.IBLOCK_ID=B.ID AND FP7.CODE='code12' INNER JOIN b_iblock_element_property
FPV7 ON FP7.ID=FPV7.IBLOCK_PROPERTY_ID AND FPV7.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP8 ON FP8.IBLOCK_ID=B.ID AND FP8.CODE='code15' INNER
JOIN b_iblock_element_property FPV8 ON FP8.ID=FPV8.IBLOCK_PROPERTY_ID AND
FPV8.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP9 ON
FP9.IBLOCK_ID=B.ID AND FP9.CODE='code16' INNER JOIN b_iblock_element_property
FPV9 ON FP9.ID=FPV9.IBLOCK_PROPERTY_ID AND FPV9.IBLOCK_ELEMENT_ID=BE.ID INNER
JOIN b_iblock_property FP10 ON FP10.IBLOCK_ID=B.ID AND FP10.CODE='code18'
INNER JOIN b_iblock_element_property FPV10 ON FP10.ID=FPV10.IBLOCK_PROPERTY_ID
AND FPV10.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP11 ON
FP11.IBLOCK_ID=B.ID AND FP11.CODE='code23' INNER JOIN
b_iblock_element_property FPV11 ON FP11.ID=FPV11.IBLOCK_PROPERTY_ID AND
FPV11.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP12 ON
FP12.IBLOCK_ID=B.ID AND FP12.CODE='code26' INNER JOIN
b_iblock_element_property FPV12 ON FP12.ID=FPV12.IBLOCK_PROPERTY_ID AND
FPV12.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP13 ON
FP13.IBLOCK_ID=B.ID AND FP13.CODE='code27' INNER JOIN
b_iblock_element_property FPV13 ON FP13.ID=FPV13.IBLOCK_PROPERTY_ID AND
FPV13.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP14 ON
FP14.IBLOCK_ID=B.ID AND FP14.CODE='code32' INNER JOIN
b_iblock_element_property FPV14 ON FP14.ID=FPV14.IBLOCK_PROPERTY_ID AND
FPV14.IBLOCK_ELEMENT_ID=BE.ID INNER JOIN b_iblock_property FP15 ON
FP15.IBLOCK_ID=B.ID AND FP15.CODE='code34' INNER JOIN
b_iblock_element_property FPV15 ON FP15.ID=FPV15.IBLOCK_PROPERTY_ID AND
FPV15.IBLOCK_ELEMENT_ID=BE.ID WHERE 1=1 AND B.ID IN (0,42) AND (
(BE.WF_STATUS_ID=1 AND BE.WF_PARENT_ELEMENT_ID IS NULL) ) AND ((((
(upper(BE.NAME) like upper('%acer7730G%') and BE.NAME is not null) )))) AND
(((( (upper(FPV1.VALUE) like upper('%Intel%') and FPV1.VALUE is not null) AND
(upper(FPV1.VALUE) like upper('%Core2Duo%') and FPV1.VALUE is not null) AND
(upper(FPV1.VALUE) like upper('%T5850%') and FPV1.VALUE is not null) AND
(upper(FPV1.VALUE) like upper('%2.16GHz%') and FPV1.VALUE is not null) ))))
AND (((( (upper(FPV2.VALUE) like upper('%4096Mb%') and FPV2.VALUE is not null)
AND ( (upper(FPV2.VALUE) like upper('%4Gb%') and FPV2.VALUE is not null) ) AND
(upper(FPV2.VALUE) like upper('%DDRII%') and FPV2.VALUE is not null) )))) AND
(((( (upper(FPV3.VALUE) like upper('%2x320Gb%') and FPV3.VALUE is not null)
AND (upper(FPV3.VALUE) like upper('%5400rpm%') and FPV3.VALUE is not null) AND
(upper(FPV3.VALUE) like upper('%SATA%') and FPV3.VALUE is not null) )))) AND
(((( (upper(FPV4.VALUE) like upper('%17%') and FPV4.VALUE is not null) ))))
AND (((( (upper(FPV5.VALUE) like upper('%??%') and FPV5.VALUE is not null)
)))) AND (((( (upper(FPV6.VALUE) like upper('%64Mb%') and FPV6.VALUE is not
null) AND ( (upper(FPV6.VALUE) like upper('%??%') and FPV6.VALUE is not null)
AND (upper(FPV6.VALUE) like upper('%958Mb%') and FPV6.VALUE is not null) )))))
AND (((( (upper(FPV7.VALUE) like upper('%??%') and FPV7.VALUE is not null)
)))) AND (((( (upper(FPV8.VALUE) like upper('%Bluetooth%') and FPV8.VALUE is
not null) AND (upper(FPV8.VALUE) like upper('%V2.0%') and FPV8.VALUE is not
null) AND (upper(FPV8.VALUE) like upper('%EDR%') and FPV8.VALUE is not null)
)))) AND (((( (upper(FPV9.VALUE) like upper('%4%') and FPV9.VALUE is not null)
)))) AND (((( (upper(FPV10.VALUE) like upper('%??%') and FPV10.VALUE is not
null) )))) AND (((( (upper(FPV11.VALUE) like upper('%??%') and FPV11.VALUE is
not null) )))) AND (((( (upper(FPV12.VALUE) like upper('%??%') and FPV12.VALUE
is not null) )))) AND (((( (upper(FPV13.VALUE) like upper('%WebCam%') and
FPV13.VALUE is not null) AND (upper(FPV13.VALUE) like upper('%1,3Mpx%') and
FPV13.VALUE is not null) )))) AND (((( (upper(FPV14.VALUE) like
upper('%?????%') and FPV14.VALUE is not null) )))) AND ((((
(upper(FPV15.VALUE) like upper('%12%') and FPV15.VALUE is not null) AND
(upper(FPV15.VALUE) like upper('%???????%') and FPV15.VALUE is not null) ))))
AND ((((BE.IBLOCK_ID = '42')))) 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 ((BS.ID = 224)) ORDER BY BE.SORT asc , BE.ID desc
LIMIT 0, 30

Битрикс (http://dev.1c-bitrix.ru/community/forums/forum6/topic14898/)

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

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

  • страйко:
    вот как можно было написать такое?! О_о
    Ответить
  • Stam:
    оно там так и написано или это постепенно сгенерированный кусок? но все равно страшно ))
    Ответить
  • страйко:
    тоже стало интересно, как это выглядит в пхп коде, но пока не нашёл
    Ответить
  • мЫш:
    это еще цветочки. внутрь лучше не заглядывать... Нервы могут не выдержать.

    Просто его писало куча людей и общая стилистика отсутсвует, скл запросы хоть и собираються, но они поистине громандые. В общем писать под битрикс с жуть!
    Ответить
  • pROCKrammer:
    Угу ) Долой Битрикс) лучшее писать ручками
    Ответить
  • 1:
    Будь я сукель-сервером, — не осилил бы и упал. Хвала и честь майсиклу стойкому. 🙂
    Ответить
  • buger:
    Очень похоже на авто-сгенерированную выборку
    Ответить
  • o_nix:
    Да, на ORM-генерацию смахивает… Так что чего вы всполошились. 🙂
    Ответить
  • страйко:
    какой-то херовый ОРМ (если конечно битрикс знает такие слова вообще)

    p.s. хоть орм, хоть не орм - запрос говно
    Ответить
  • anmiles:
    гавнищще достойное говнобитрикса с его говнооптимизацией.
    +1 стопицоттыщмелеонаф раз.
    Ответить
  • NRG:
    да...
    то что битрикс писали уроды это и так известно))
    мне просто приходилось как-то работать с этим гавном, там не может быть и речи об оптимизации, там настолько все запущенно, что когда стартует битрикс(всмысле его ядро) т.е. в скрипте только инклуд хедера и футера, он отрабатывает за 1400мс.
    так что ядумаю комментарии в сторону сука-битрикса излишни
    Ответить
  • Arty:
    Этому запросу место в топе говнокода вместе с битриксом.
    Ответить
  • Быдлокодер:
    Ха, слабаки в битриксе, вот у нас запрос был на 3 полных экрана.

    ЗЫ: капча 00330 🙂
    Ответить
  • страйкер:
    с точки зрения маркетинга это хороший проект.
    с точки зрения программирования — говнокод!

    нас интересует только вторая точка зрения 🙂
    Ответить
  • Мультикасса:
    Потому что они пошли по пути когда высокопроизводительная железка для клиента стоит дешевле, чем их работа по оптимизации (не все клиенты могут и будут покупать их продукт), а вот богатые могут, но и железку купят такую, как там в требованиях написано (а иначе к 1с какие претензии что все тормозит?), и все будет работать и все будут "довольны" =) А 1с получит свою денюжку за свой "высокопроизводительный" говнокод.
    Ответить
  • Дмитрий:
    Надо отдельную категорию завести "Говнокод Битрикса". ^_^.
    Ответить
  • Господа.
    Претензии только к оформлению?
    Зайдите на http://www.sqlinform.com и запастите код.
    Коряво, но не так уж и говенно.
    Глупо, конечно, если битрикс намеренно генерирует хреново форматированный код.
    Действительно говнозащита.

    Я минусую.
    Ответить
    • Если мне не изменяет память, то INNER JOIN далеко не самая дешёвая операция, наряду с функциями. Претензии отнюдь не к оформлению.
      Ответить
  • Нормально все.
    Че вы зашумели?
    Просто в таблице содержится информация о множестве параметров, которые расписаны каждый в своей таблице.
    И вдруг, они все понадобились.
    Ответить
    • Вообще-то там описано множество параметров, которые расписаны в одной-двух(!) таблицах.
      Иннер-Джойном одна и та же таблица прихерачивается раз тридцать.
      Дурота.
      Ответить
  • Код сгенерирован автоматически, это очевидно - посмотрите, там параметры конкретных характеристик, по которым пользователь хочет выполнить фильтрацию списка. То, что одна-две таблицы "при#рачиваются" тридцать раз - это не недостаток, а преимущество битрикса, признак высокого уровня нормализации базы данных, что дает возможность добавлять пользовательские поля и свойства. Ничего не шарите, товарищи 🙂
    Ответить
  • Вообще в говнобитриксе есть возможность хранить содержимое b_iblock_element и b_iblock_element_property в одной таблице. Для таких случаев.
    Ответить
  • а вы конфигуратор 1с 8 откройте, там во всех отчетах такое
    Ответить

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

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

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


    8