Что нового

[MySql] Экранирование данных.

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
Работаю напрямую с базой MySql, вставляю туда данные, например UPDATE .... `data`='Какие то данные'
Так я подумал, если данные будут содержать ковычки, спец символы или вообще, операторы языка, то видимо будет ошибка или что похуже. Есть ли какая нибудь команда, что бы выполнить "экранирование" вставляемых данных.
P.S работаю с базой через COM объект, поэтому желательно подскажите метод или свойство, типа $oDBConn.Escape
 

XpycT

Скриптер
Сообщения
380
Репутация
133
inververs
Насколько мне известно, то такого метода или свойства нет (могу ошибаться).

Например я это делаю перед составлением строки запроса при помощи
Код:
StringRegExpReplace
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
XpycT
Не могли бы вы показать, как у вас работает.
Какие на какие символы нужно менять.
 

XpycT

Скриптер
Сообщения
380
Репутация
133
inververs
Вот так это сделанно в MySQL UDF
Код:
$sEscStr = StringReplace($sEscStr, "\", "\\")
	$sEscStr = StringReplace($sEscStr, "'", "\'")
	$sEscStr = StringReplace($sEscStr, '"', '\"')
	$sEscStr = StringReplace($sEscStr, "%", "\%")
	$sEscStr = StringReplace($sEscStr, "_", "\_")


Но это только для INSER или UPDATE. Для SELECT не надо этого делать, там нормальный текст возвращается (по крайне мере у меня)

Если даже при SELECT надо обратить "экранирование", то тогда так
Код:
$sEscStr = StringReplace($sEscStr, "\'", "'")
	$sEscStr = StringReplace($sEscStr, '\"', '"')
	$sEscStr = StringReplace($sEscStr, "\%", "%")
	$sEscStr = StringReplace($sEscStr, "\_", "_")
	$sEscStr = StringReplace($sEscStr, "\\", "\")
 
Автор
inververs

inververs

AutoIT Гуру
Сообщения
2,135
Репутация
465
XpycT
Спасибо, буду иметь ввиду.
 
Верх