Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
Нужно писать в базу некий текст. В котором иногда встречается апостроф '
mysql, естественно, отказывается писать его в базу, при этом двойные кавычки и проч пишутся без проблем.
Если я пользуюсь addslashes(), то всё пишется в базу, зато материал, который берётся из этой базы для отображения на сайте отображается не в виде ", а в виде /", т. е. с ненужными мне слэшами.
Подскажите, как можно решить эту проблему на стадии записи в БД, т. к. вывод на экран из БД я изменить не могу.
exlant
Отправлено: 20 Марта, 2015 - 07:58:53
Посетитель
Покинул форум
Сообщений всего: 425
Дата рег-ции: Февр. 2015
mysql_real_escape_string(): Access denied for user 'username' (using password: NO) in /var/www/script.inc.php on line N
Warning: mysql_real_escape_string(): A link to the server could not be established in /var/www/script.parse.inc.php on line N
по вашему вопросу, я предположил, что используется библиотека mysql, поэтому предложил mysql_real_escape_string, на pdo эта функция естественно работать не будет!
Цитата:
А разница? Работает одинаково.
разница существенная! вставляемые таким образом данные, экранируются самими pdo
Цитата:
Вызов PDO::prepare() и PDOStatement::execute() для запросов, которые будут запускаться многократно с различными параметрами, повышает производительность приложения, так как позволяет драйверу кэшировать на клиенте и/или сервере план выполнения запроса и метаданные, а также помогает избежать SQL иньекций, так как нет необходимости экранировать передаваемые параметры.
Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
exlant пишет:
разница существенная! вставляемые таким образом данные, экранируются самими pdo
Цитата:
Вызов PDO::prepare() и PDOStatement::execute() для запросов, которые будут запускаться многократно с различными параметрами, повышает производительность приложения, так как позволяет драйверу кэшировать на клиенте и/или сервере план выполнения запроса и метаданные, а также помогает избежать SQL иньекций, так как нет необходимости экранировать передаваемые параметры.
Про ошибку-то я заметил, это не вопрос.
Да, действительно, данный способ помог решить проблему.
Обычно я bindю данные для excute, но в данном случае вставляется/обновляется единичная запись, поэтом решил пойти прямым путём. Не думал, что здесь и проблема с экранированием решается.
zloy dyx
Отправлено: 20 Марта, 2015 - 09:43:39
Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Авг. 2014 Откуда: Германия
Помог: 0 раз(а)
[+]
mysqli_real_escape_string
Sail
Отправлено: 20 Марта, 2015 - 10:00:43
Участник
Покинул форум
Сообщений всего: 1131
Дата рег-ции: Февр. 2014
Помог: 57 раз(а)
zloy dyx, зря Вы так... Wooorker, на крайний случай есть ещё quote()
Wooorker
Отправлено: 20 Марта, 2015 - 12:16:55
Гость
Покинул форум
Сообщений всего: 99
Дата рег-ции: Нояб. 2011
Помог: 0 раз(а)
Я докучи ещё спрошу по этому же вопрос, только другая проблема.
После вышеприведённого кода для проверки ввёл код
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.