Akdmeh » 2009.06.14 19:33

Не думал, что буду обращаться.
Это больше тема-консультация.
Во время использования mysql_escape_string заметил забавнейший парадокс:
$string="\r\n";//перевод каретки
Но если сделать так:
$string=mysql_escape_string($string);
echo $string;
мы получаем \r\n но уже не как перевод строки, а как обычную текстовую строку.
Но парадокс вот в чём - когда же мы занесём это значение в базу данных со строки оно опять превратиться в перевод.

Практическая сторона вопроса:
сначала фильтрую переменную от пользователя, и вывожу её в браузер в текстареа в случае ошибки.
Но случается парадокс, и все переносы строк заменяются на видимый \r\n.
Но если занесу в базу данных - то этого не наблюдается - и то, что было видимым \r\n опять становиться переводом.
Почему так случается?

Gemorroj » 2009.06.14 20:01

а в чем парадокс-то?) обратные слеши слешируются и все.

JInn » 2009.06.14 20:07

Избежать такой проблемы можно используя mysql_escape_string конкретно в запросе, типа
mysql_query("INSERT INTO `tabl` SET `id`='".mysql_escape_string($_POST['id'])."' ");

Akdmeh » 2009.06.14 20:12

Дык вот в чём вопрос: выходит они слэшируються в запросе, а уже в базе данных их нет?

JInn » 2009.06.14 20:34

Не в запросе а после обработки функцией. Слеши нужны только чтобы вставить данные в базу. После этого они само собой удаляются