Экранирование значений с апострофами для вставки MySQL - PullRequest
2 голосов
/ 30 ноября 2010

Я пытаюсь создать несколько операторов вставки SQL, и некоторые переменные имеют следующие имена:

  • "Aamma's Pastries"

Я хочу избежать кавычки ('), когда добавляю значение в базу данных MySQL. Как мне это сделать с PHP?

Ответы [ 4 ]

4 голосов
/ 30 ноября 2010

Вы уже приняли ответ, но я хотел бы предложить вам лучший подход. Использование такого подхода, как mysql_real_escape_string, требует, чтобы вы постоянно не забывали применять его каждый раз в каждом отдельном запросе; это утомительно и подвержено ошибкам.

Более простой подход, который также обеспечивает согласованность, заключается в использовании параметризованных операторов . Это гарантирует, что все правильно экранировано, а также избавляет от необходимости вставлять переменные в ваши запросы.

В PHP это можно использовать с более новыми библиотеками PDO или MySQLi . Из них я предпочитаю PDO за гибкость, которую он обеспечивает (например, я в настоящее время застрял с MySQL, но я не собираюсь продолжать работать с моим приложением таким образом, и с PDO миграция будет значительно упрощена), но есть Здесь много вопросов о SO, которые охватывают все за и против каждого.

2 голосов
/ 30 ноября 2010

Посмотрите на mysql_real_escape_string

1 голос
/ 30 ноября 2010

Пожалуйста, используйте операторы prepare и позвольте mysql обрабатывать экранирование, а вы делаете на уровне кода

0 голосов
/ 30 ноября 2010

Эта функция, которую вы можете использовать, экранирует все нужные вам символы. Вот пример кода в php

<?php
$str = "Is your name O'reilly?";

// Outputs: Is your name O\'reilly?
echo addslashes($str);
?>
...