С php знаком знаком поверхностно, появилась необходимость написать небольшой скрипт,который вставляет в базу данных текст.
Проблема в том, что при моем варианте написания кода, когда в тексте встречается знак ',вылетает ошибка. Вот мой код :
$sql="Insert into jahts(`fieldname`) values ('$text')";
mysql_query($sql);
Чтобы избавиться от знаков ' в тексте(который в переменной $text) использую вот такую строку :
$text=str_replace("'","''",$text);
Также пробовал вот такой вариант :
$text=str_replace("\'","\''",$text);
В некоторых местах апостроф заменяется,а в некоторых,как например, $text='John's book' нет и вылетает ошибка sql,так как сервер БД думает что апостроф перед буквой s - закрывающий.
Собственно просьба : исправьте,пожалуйста, у код чтобы этот апостроф не вызывал ошибку.
Возможно,у кого-то есть правильно написанное выражение для eregi_replace, которое отлавливает и заменяет все апострофы.
С уважением.
Спустя 8 минут, 19 секунд (16.04.2012 - 07:21) Панч написал(а):
попробуй так
$text=str_replace("'","\'", $text);
Спустя 16 минут, 5 секунд (16.04.2012 - 07:37) Игорь_Vasinsky написал(а):
mysql_real_escape_string() при записи в БД
Спустя 12 минут, 28 секунд (16.04.2012 - 07:50) Guest написал(а):
Цитата (Игорь_Vasinsky @ 16.04.2012 - 04:37) |
mysql_real_escape_string() при записи в БД |
Спасибо, проблема решена.
Спустя 24 минуты, 14 секунд (16.04.2012 - 08:14) Гость_Андрей написал(а):
Прошу прощения, ошибка вес еще сохраняется.
Вот пример где не срабатывает :
$text="O'CEANOS";
после
$text=mysql_real_escape_string($text);
$text="O\'CEANOS";
И снова при выполнении запроса вылетает ошибка из-за одинарного апострофа в тексте.
После выполнения преобразований должно быть : $text="O''CEANOS";
Вот пример где не срабатывает :
$text="O'CEANOS";
после
$text=mysql_real_escape_string($text);
$text="O\'CEANOS";
И снова при выполнении запроса вылетает ошибка из-за одинарного апострофа в тексте.
После выполнения преобразований должно быть : $text="O''CEANOS";
Спустя 12 минут, 24 секунды (16.04.2012 - 08:26) Игорь_Vasinsky написал(а):
mysql_real_escape_string() - всё сама экранирует, stripslashes() - поможет вывести всё в первоначальном виде.