Апострофы в динамических данных из MySQL

У меня есть простая потребность разрешить пользователям вводить апостроф в различные поля, которые будут сохранены в таблице MySQL через PHP. Когда пользователь просматривает эту информацию, я бы хотел, чтобы она отображалась без /. Каков наилучший способ справиться с этим. Ниже мои идеи:

  • установить полоски слэша при отображении содержимого
  • Преобразование апострофа в «'» вперед и назад

Я также запускаю mysql_real_escape_string и htmlspecialchars для опубликованных данных. Есть ли стандартный способ справиться с этим? Спасибо!


person Brandon    schedule 06.12.2012    source источник
comment
Скорее всего, это связано с вашими настройками magic_quotes, просто отключите его. Что касается экранирования, m_r_e_s() в порядке, но лучшим подходом было бы использование подготовленных операторов (загляните в mysqli или PDO)   -  person Damien Pirsy    schedule 06.12.2012
comment
Дэмиен прав. Лучше всего для этого подходят PDO и mysqli.   -  person techie_28    schedule 06.12.2012


Ответы (1)


Вы можете использовать addslashes() для ввода апострофа и, как вы уже сказали, используйте stripslashes() для повторения. Используйте addslashes(), только если вы хотите добавить апострофы для дополнительных экранирующих функций, используемых mysql_real_escape_string

person Ravi    schedule 06.12.2012
comment
mysql_real_escape_string() уже заботится о кавычках, обеспечивая безопасную вставку. Зачем использовать аддслеши? - person Damien Pirsy; 06.12.2012
comment
Что ж, Дэмиен, я бы всегда предпочитал mysql_real_escape_string addslashes, но в данном случае он просто хочет избежать апострофов, поэтому я упомянул addlslahes, а также mysql_real_escape_string не обязательно добавляет косую черту для выхода, последние версии экранирующих кавычек MySQL, соединяя две из них вместе вместо того, чтобы ставить косую черту перед ним. - person Ravi; 06.12.2012
comment
дело в том, что экранирование функций связано с их работой во время sql и не влияет на содержимое. Таким образом, mysql_real_escape или упомянутое вами удвоение кавычек происходит только во время вставки, но внутри базы данных содержимое нормальное. Addslashes вместо этого физически добавляет косые черты, которые затем вам нужно удалить из текста - вот причина, по которой ваше решение несколько неверно. - person Damien Pirsy; 06.12.2012
comment
@DamienPirsy, спасибо, Дэмиен. Похоже, что использование m_r_e_s() можно использовать при вводе данных в базу данных, а полоски слэша можно использовать при их отображении. Спасибо! - person Brandon; 06.12.2012