Экранирование MySQL
На более старом сервере, который я использую, я не могу использовать подготовленные операторы, поскольку в настоящее время я пытаюсь полностью избежать пользовательского ввода перед отправкой его в MySQL. Для этого я использую функцию PHPmysql_real_escape_string
.
Поскольку эта функция не экранирует символы подстановки MySQL% и _ я используюaddcslashes
чтобы избежать этого, а также.
Когда я отправляю что-то вроде:
test_test " '
в базу данных, а затем прочитать его обратно база данных показывает:
test\_test " '
Глядя на это, я не могу понять, почему _ имеет предшествующий обратный слеш, но "и" нет. Так как все они экранированы с помощью \ обязательно _ и ", все должны выглядеть одинаково, то есть у всех есть видимый escape-символ или все это не видно
Выходящие \ s автоматически экранированы для
Кто-нибудь может объяснить это?