$str = 'BEGIN This is a "quote" test. \'Single\' END';
echo $str . "\n";
echo mysql_real_escape_string($str);
// Outputs:
BEGIN This is a "quote" test. 'Single' END
BEGIN This is a \"quote\" test. \'Single\' END
Запуск PHP 5.3.2 на CentOS. Насколько я помню, mysql_real_escape_string()
будет избегать одиночных кавычек, чтобы предотвратить инъекции sql. Двойные кавычки не имеют к этому никакого отношения, потому что "
не запускает и не заканчивает строковый литерал в MySQL!Сегодня mysql_real_escape_string() имеет одинарные кавычки и двойные кавычки
Это вызывает обратную косую черту, которая будет вставлена в данные! Что-то я явно не хочу.
Что изменилось недавно? Обновленная версия PHP? Что-то другое? Он не просто начнет делать это без причины? Изменена ли настройка в php.ini? –
'mysql_real_escape_string' отправляет строку на сервер MySQL, чтобы она удаляла данные, а затем возвращает то, что она отправляет вам. Кроме того, MySQL в своем режиме по умолчанию принимает как '' ', так и' '' как разделители строк. – Powerlord