Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > экранирования для firebird


Автор: DimaSiK 7.7.2009, 17:47
Есть такая строка запроса
Код

DELETE FROM GENERIC WHERE SSN_TYPE = 'asd"asd' AND CODE = 'asd'das'

Для экранирование использую addsleshes и получаю такой запрос
Код

DELETE FROM GENERIC WHERE SSN_TYPE = 'asd\"asd' AND CODE = 'asd\'das'


При выполнение получаю ошибку. Как мне верно сделать экранирование?

Автор: icewind 7.7.2009, 19:08
Два вопроса:
1. Какую ошибку? 
2. При чем здесь PHP?

Автор: Veve 7.7.2009, 21:51
Экранирование одинарной кавычки производиться с помощью добавления другой одинарной кавычки. Итого имеем:

Код

DELETE FROM GENERIC WHERE SSN_TYPE = 'asd\"asd' AND CODE = 'asd''das'

Автор: DimaSiK 8.7.2009, 09:02
Цитата(Veve @ 7.7.2009,  21:51)
Экранирование одинарной кавычки производиться с помощью добавления другой одинарной кавычки. Итого имеем:

Код

DELETE FROM GENERIC WHERE SSN_TYPE = 'asd\"asd' AND CODE = 'asd''das'

Главное при вставке экранирование с помощью addslashes помогает. А при выборке - ошибка.

Автор: Ипатьев 8.7.2009, 10:00
DimaSiK, addslashes не помогает при составлении запросов в firebird. При дефолтных, так скажем, настройках пхп. 
Это верно для любых запросов. На ставку запрос, или на выборку - значения никакого не имеет. Ты вообще читал, что тебе Veve написал?
Цитата(Veve @  7.7.2009,  21:51 Найти цитируемый пост)
Экранирование одинарной кавычки производиться с помощью добавления другой одинарной кавычки

addslashes добавляет косую черту, а не кавычку. 
заменяй простым str_replace одну кавычку на две. И почитай где-нибудь правила экранирования для той СУБД, которой ты собрался пользоваться. Возможно, там надо искейпить еще что-то.

Veve, а зачем у тебя двойная кавычка со слешем написана? Так надо?

Автор: Veve 8.7.2009, 10:28
Цитата(Ипатьев)

Veve, а зачем у тебя двойная кавычка со слешем написана? Так надо? 


От куда я знаю, может у него текст такой smile Из-за \" при выполнение запроса, уж точно не будет ошибки. А там где у него ошибка я исправил  smile  smile 

Автор: Ипатьев 8.7.2009, 12:21
А, понятно. \" после addslashes получилось, для firebird оно, я думаю, не нужно.

Автор: skyboy 9.7.2009, 15:55
лучше использовать механизм доступа к БД, который самостоятельно производит экранирование при использовании параметров в запросах. PDO там, или adodb_lite.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)