Чтобы предотвратить атаки SQL-инъекций до выполнения запросов (включая INSERT-теги), я использую mysql_real_escape_string
.php/mysql real_escape и специальные символы
Проблема заключается в том, что если данные для ввода имеют специальный символ, MYSQL, похоже, вставляет косую черту в базу данных при вставке.
Затем, когда я показываю поле на веб-странице, появляется косая черта.
В идеале, я не хочу иметь косую черту перед специальными символами в таблицах Dbase, так как это потребует много текущего обслуживания, чтобы удалить косую черту при отображении данных и т.д.
Есть в любом случае хранить в базе данных без включения обратной косой черты?
как пример:
$field = "bob's data";
...establish database connection
$field = mysql_real_escape_string($field);
$sql="INSERT INTO table (field) VALUES ('$field')";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
путы "боб \ 's данных" в базе данных.
Есть ли способ обрабатывать это по-другому, чтобы не заканчивать косой чертой в базе данных?
Примечание: Я знаю, что предпочтительный способ выполнения qureris - использовать параметризованные запросы или pdo, но по разным причинам не может сделать этого в этом случае, поскольку это огромный старый сайт.
Благодарим вас за любые предложения.
Google для 'magic_quotes' – zerkms
Вы действительно назначить' $ field' буквально так, или это взялось '$ _GET' или' $ _POST'? Если это произошло от ввода клиента, проблема 'magic_quotes' может быть проблемой, как упоминает @zerkms. Если это буквально, я не думаю, что это происходит, как вы говорите. – Barmar
Это сообщение отправлено из текстового поля. Я просто написал это так, чтобы проиллюстрировать случай, когда вход имеет апостроф. Я не думаю, что волшебные цитаты продолжаются. – user1904273