Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz

18.02.2008, 14:17
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Поппробуй concat(table_name, 0x3a) заместо max(table_name)
|
|
|

18.02.2008, 14:45
|
|
Познавший АНТИЧАТ
Регистрация: 27.04.2007
Сообщений: 1,044
Провел на форуме: 3660186
Репутация:
905
|
|
Разве функция max() предназначена для строковых полей?
ЗЫ. Сорри, ступил, для них она тоже работает)
Последний раз редактировалось krypt3r; 18.02.2008 в 15:08..
|
|
|

18.02.2008, 17:36
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Scipio, Isis
Нечего там не фильтруеться переведи ошибку для начала.
max() - возвращает максимальное значение аргумента.
concat() - не поддерживаеться в mssql нету там такой функции.
/**/ не являються официльными коментариями в mssql при фильтрации лучше всего испоьзывать стандартные знаки типо + и табуляции в URL encode.
Incorrect syntax near 'from'
Не ругаеться на from, написанно что некорректный синксасис рядом/около 'from'.
Модераторы убидительная просьба почистите тему!!!
Хм, а что в теме не так? Люди обсуждают тему.
Alexsize
Последний раз редактировалось Alexsize; 18.02.2008 в 18:48..
|
|
|

18.02.2008, 18:19
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
Не ругаеться на from, написанно что некорректный синксасис рядом/около 'from'.
Я про это уже сказал и поэтому предложил заменить на /**/ хоть они и неоф.комментарии, но работает
|
|
|

18.02.2008, 20:45
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
[ cash ], max() возвращает всего лишь одно значение, как и top 1, для использования подзапросов это как раз и надо, чтоб подзапрос возвращал однo значение, только немного с другой стороны подход, но ты всегда можешь сам попробовать и убедиться что это то что нужно и вполне равноцено (в плане получения одного только значения) использованию top 1 при sql-inj
/**/ обычный коммент и является заменой пробелу, покрайней мере в 2000 сервере точно работает, насчет concat согласен
__________________
Карфаген должен быть разрушен...
Последний раз редактировалось Scipio; 18.02.2008 в 20:55..
|
|
|

19.02.2008, 11:07
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Scipio
Пример приведи мне с описанием.
|
|
|

19.02.2008, 12:56
|
|
Members of Antichat - Level 5
Регистрация: 02.11.2006
Сообщений: 781
Провел на форуме: 5939734
Репутация:
1917
|
|
Сообщение от [ cash ]
Scipio
Пример приведи мне с описанием.
Ну что значит с описанием, (вобще ты сам дал описание), но я говорил про использование max() в контексте SQL-inj... насчет примеров мне не охото сейчас особо искать, вот первое что попалось, это не MSSQL а SYBASE ASE 12.05, но сам понимаешь разницы большой нет, уж на край ты и сам сможешь попробовать на mssql, пример:
Код:
http://www.radiofrance.fr/rf/documentation/dossiers/liens/?rid=convert(numeric,(select+max(dbname)+from+master..syslogins))--
Код:
http://www.radiofrance.fr/rf/documentation/dossiers/liens/?rid=convert(numeric,(select+max(dbname)+from+master..syslogins+where+dbname+not+in+(0x73796273797374656D6462)))--
__________________
Карфаген должен быть разрушен...
|
|
|

19.02.2008, 11:23
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Две наиболее популярные области применения функций связаны с возможнос-
тью повторного использования кода и упрощенным представлением сложных запро-
сов. Одно из основных преимуществ функций заключается в том, что вы можете ис-
пользовать их взамен программного кода, который в обычных условиях пришлось
бы писать снова и снова. Функции дают возможность компактно представить боль-
шие фрагменты кода для повторного использования. Рассмотрим простейший вари-
ант: вам необходимо, используя SQL Server, извлечь наибольшее значение столбца
Amount таблицы Sales, чтобы выяснить максимальный показатель за сутки. Если бы
не встроенные функции, нам пришлось бы прибегнуть к таким непрактичным при-
емам, как курсоры и переменные, и написать много строк кода в случае повторно-
го использования в проекте. К счастью, среди встроенных функций предусмотрена
специальная функция MAX(), пригодная для решения данной задачи. Функция MAX()
возвращает максимальное значение столбца, и ее можно использовать следующим
образом:
Код:
CREATE TABLE SALES(
AMOUNT NUMERIC(5,2)
);
INSERT INTO SALES(AMOUNT) VALUES(100.00);
INSERT INTO SALES(AMOUNT) VALUES(1435.50);
INSERT INTO SALES(AMOUNT) VALUES(456.87);
INSERT INTO SALES(AMOUNT) VALUES(4500.00);
INSERT INTO SALES(AMOUNT) VALUES(564.55);
INSERT INTO SALES(AMOUNT) VALUES(3456.34);
SELECT MAX(AMOUNT) AS BIG_SALE FROM SALES;
BIG_SALE
4500.00
|
|
|

19.02.2008, 11:34
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
[ cash ], так правильно....выше уже сказали что max() возвращает одно значение - максимальное...
А если AMOUNT string, что выведет max?
|
|
|

19.02.2008, 13:12
|
|
Banned
Регистрация: 27.06.2006
Сообщений: 1,614
Провел на форуме: 3887520
Репутация:
2996
|
|
Забавно, неплохо.
Таким образом можно применять как минимум с десяток функций... тот же min().
2Кельт, иногда top фильтруется попробуй замени на max(table_name)
Хочу заметить что когда top или select или др. фильтруеться, не будет вывода в ошибку базы данных, так как данные отфильтровываються на уровне веб сервера а не базы. Следовательно при ошибке
Incorrect syntax near 'TOP'
TOP передаеться в базу без фильтра.
Последний раз редактировалось [ cash ]; 19.02.2008 в 13:18..
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|