Я использую PHP версии 5.3 и пытаюсь использовать mysql_real_escape_string($unescaped_string)
в своем коде, но получаю ошибку:
Fatal error: Call to undefined function mysql_real_escape_string() in /var/www/engine/database.php on line 38
Однако я могу подключиться к базе данных. Почему он недоступен?
Я использую PHP версии 5.3.
Обновление, как упоминалось в комментарии , mysql_
устарело с 5,5 :
Расширение mysql устарело с PHP 5.5. Вместо этого следует использовать расширение mysqli или PDO. Отклонение было определено в mysql_deprecation , где можно найти обсуждение причин этого решения.
и удалены в PHP 7 .
mysql_real_escape_string()
является стандартной частью функции MySQL «пакет» и всегда должна работать, если расширение загружено правильно.
mysql_
ли какая-либо другая функция mysql_
? (Это не должно)
Удостоверьтесь, что у вас есть эта строка без комментариев в вашем php.ini
:
extension=mysql.so
Также было бы разумно использовать mysqli
или PDO
вместо ( mysql_
устарел ), они оба могут позаботиться об эвакуации для вас.
Интересно, что после изучения всех других решений здесь я понял, что проблема на самом деле связана с тем, что расширение php5-mysql
не установлено: оно не установлено по умолчанию на новом Ubuntu, а также при установке новой php. Итак, для меня решение стало: установить расширение php5-mysql:
sudo apt-get install php5-mysql
После этого я снова не получал эти неприятные ошибки mysql_ * 😉
Возможно, ваша проблема связана с конфигурацией php-сервера (компиляция).
Здесь больше информации о mysql_real_escape_string: http://www.php.net/manual/en/function.mysql-real-escape-string.php
Расширение MySQL устарело с PHP 5.5. Поэтому mysql_real_escape_string () недоступен в PHP 7. Это означает, что пользовательский ввод не может быть экранирован правильно и оставляет код открытым для SQL-инъекций.
Официальным решением PHP является замена ext / mysql на MySQLi, PDO или другое поддерживаемое расширение базы данных.
Чтобы предотвратить атаки SQL-инъекций, рекомендуется использовать подготовленные инструкции и параметризованные запросы при разговоре с базой данных.