bindValue не уходит - PullRequest
       49

bindValue не уходит

1 голос
/ 03 апреля 2011

Я прочитал комментарий на php.net:

Хотя bindValue() экранирует кавычки, он не экранирует "%" и "_", поэтому будьте осторожны при использовании LIKE.Вредоносный параметр, заполненный %%%, может сбросить всю вашу базу данных, если вы сами не экранировали этот параметр.PDO не предоставляет какой-либо другой метод escape для его обработки.

Так действительно ли он не экранирует% и _?Что может быть лучшим решением для этого?

1 Ответ

2 голосов
/ 03 апреля 2011

Как говорится в комментарии, это действительно проблема только для LIKE запросов.

Это зависит от вашей базы данных, как вы должны экранировать эти значения.Если нормальное экранирование обратной косой черты работает (как в MySQL), тогда используйте:

$like = addcslashes($like, "%_");

В качестве альтернативы, вероятно, лучше быть ленивым и просто удалить эти метасимволы:

$like = strtr($like, "%_", "  ");
...