Автор Тема: Проверка ситаксиса SQL-запроса.  (Прочитано 4004 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« : 25 Ноября 2002, 19:16:25 »
Подскажите пожалуйста, как можно в "защитить" запрос от пользовательского ввода символов вроде \', " и пр.
Большое спасибо.

Оффлайн ThE0ReTiC

  • Главный по тарелочкам
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 4041
  • +2/-0
  • 2
    • Просмотр профиля
    • http://
Проверка ситаксиса SQL-запроса.
« Ответ #1 : 25 Ноября 2002, 20:03:50 »
addslashes()
mysql_escape_string()
AS IS...

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
Проверка ситаксиса SQL-запроса.
« Ответ #2 : 25 Ноября 2002, 21:28:55 »
placeholders
2B OR NOT 2B = FF

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« Ответ #3 : 28 Ноября 2002, 16:09:13 »
странно, но у меня SQL выдаёт ошибку при запросе:
select * from table1 where (field1 LIKE \'AAA\\\'BBB\')
БД у меня - Informix.
Чем же мне эту кавычку заменить?
« Последнее редактирование: 28 Ноября 2002, 16:25:51 от Evgeny »

Оффлайн AlieN

  • Абыр!=)
  • Ветеран
  • *****
  • Сообщений: 1315
  • +0/-1
  • 2
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« Ответ #4 : 28 Ноября 2002, 16:30:49 »
Evgeny
Попробуй вот так
select * from table1 where field1 LIKE "AAA\\\'BBB"
The Chemical Brothers - Hey Boy Hey Girl (User Friendly Mix)
Peter Presta pres - Set Sail(Peter Presta Apple Jaxx Dub) She S.Sunshine Feat Mila - Bring The Beat Back (Club Mix) Jerry Ropero - Home Alone (Dub Mix)

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« Ответ #5 : 28 Ноября 2002, 18:24:03 »
или вот так:
select * from table1 where (field1 LIKE \'AAA\'\'BBB\')
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« Ответ #6 : 28 Ноября 2002, 18:57:08 »
AlieN
Цитировать
Попробуй вот так
select * from table1 where field1 LIKE "AAA\'BBB"

Это понятно, но ведь пользователь может ввести оба варианта кавычек :(
Ведь должна быть возможность как-то заменить этот символ. Кодом например, или специальной последовательностью символов...

Оффлайн Maniac

  • Ума нет - считай коллега
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 844
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Проверка ситаксиса SQL-запроса.
« Ответ #7 : 28 Ноября 2002, 19:33:59 »
htmlspecialchars($text,ENT_QUOTES);
TANSTAAFL

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« Ответ #8 : 29 Ноября 2002, 00:33:52 »
Evgeny
ты мой вариант проверял? В некоторых субд (sybase, mssql, interbase  насколько я знаю) кавычки экранируются второй кавычкой, то есть
select * from table1 where (field1 LIKE \'AAA\'\'BBB\')
там 2 одинарные кавычки посередине
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Evgeny

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 272
  • +0/-0
  • 0
    • Просмотр профиля
Проверка ситаксиса SQL-запроса.
« Ответ #9 : 02 Декабря 2002, 19:41:45 »
Макс
Большое спасибо, заработало.
Не заметил, что это две одинарные кавычки были.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28