Forum Webscript.Ru

Общие => Базы данных => Тема начата: Evgeny от 25 Ноября 2002, 19:16:25

Название: Проверка ситаксиса SQL-запроса.
Отправлено: Evgeny от 25 Ноября 2002, 19:16:25
Подскажите пожалуйста, как можно в "защитить" запрос от пользовательского ввода символов вроде \', " и пр.
Большое спасибо.
Название: Проверка ситаксиса SQL-запроса.
Отправлено: ThE0ReTiC от 25 Ноября 2002, 20:03:50
addslashes()
mysql_escape_string()
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Chs от 25 Ноября 2002, 21:28:55
placeholders
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Evgeny от 28 Ноября 2002, 16:09:13
странно, но у меня SQL выдаёт ошибку при запросе:
select * from table1 where (field1 LIKE \'AAA\\\'BBB\')
БД у меня - Informix.
Чем же мне эту кавычку заменить?
Название: Проверка ситаксиса SQL-запроса.
Отправлено: AlieN от 28 Ноября 2002, 16:30:49
Evgeny
Попробуй вот так
select * from table1 where field1 LIKE "AAA\\\'BBB"
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Макс от 28 Ноября 2002, 18:24:03
или вот так:
select * from table1 where (field1 LIKE \'AAA\'\'BBB\')
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Evgeny от 28 Ноября 2002, 18:57:08
AlieN
Цитировать
Попробуй вот так
select * from table1 where field1 LIKE "AAA\'BBB"

Это понятно, но ведь пользователь может ввести оба варианта кавычек :(
Ведь должна быть возможность как-то заменить этот символ. Кодом например, или специальной последовательностью символов...
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Maniac от 28 Ноября 2002, 19:33:59
htmlspecialchars($text,ENT_QUOTES);
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Макс от 29 Ноября 2002, 00:33:52
Evgeny
ты мой вариант проверял? В некоторых субд (sybase, mssql, interbase  насколько я знаю) кавычки экранируются второй кавычкой, то есть
select * from table1 where (field1 LIKE \'AAA\'\'BBB\')
там 2 одинарные кавычки посередине
Название: Проверка ситаксиса SQL-запроса.
Отправлено: Evgeny от 02 Декабря 2002, 19:41:45
Макс
Большое спасибо, заработало.
Не заметил, что это две одинарные кавычки были.