it-swarm.com.ru

mysql_real_escape_string не определена

Я использую 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.

11
MichaelH

Обновление, как указано в комментарий , mysql_ было устарело с 5.5 :

Расширение mysql устарело с PHP 5.5. Вместо этого следует использовать расширение mysqli или PDO. Решение об устаревании было решено в mysql_deprecation , где можно найти обсуждение причин этого решения.

и удалено в PHP 7.


mysql_real_escape_string() является стандартной частью функция MySQL "batch" и всегда должна работать, если расширение загружено правильно.

Работает ли другая функция mysql_? (Не должно)

Убедитесь, что эта строка не закомментирована в вашем php.ini:

extension=mysql.so

Также было бы разумно использовать mysqli или PDO вместо ( mysql_ устарело ), они оба могут позаботиться о побеге за вас.

18
Vyktor

В моем случае я использовал mysqli_real_escape_string вместо mysql_real_escape_string.

2
speksy

Интересно, что после изучения всех других решений здесь, я понял, что проблема на самом деле в том, что расширение php5-mysql еще не установлено - оно не устанавливается по умолчанию в свежей Ubuntu, равно как и при установке свежего php. Итак, для меня решение стало: установить расширение php5-mysql:

Sudo apt-get install php5-mysql

После этого я больше не получал эти неприятные ошибки mysql_ * ;-)

1
nemesisfixx

Может быть, ваша проблема заключается в конфигурации php-сервера (компиляции).

Здесь больше информации о mysql_real_escape_string: http://www.php.net/manual/en/function.mysql-real-escape-string.php

0
shinosn

Расширение MySQL устарело с PHP 5.5. Поэтому mysql_real_escape_string () недоступна в PHP 7. Это означает, что пользовательский ввод не может быть корректно экранирован и оставляет код открытым для атак с использованием SQL-инъекций.

Официальным решением PHP является замена ext/mysql на MySQLi, PDO или другое поддерживаемое расширение базы данных.

Чтобы предотвратить атаки с использованием SQL-кода, рекомендуется использовать подготовленные операторы и параметризованные запросы при обращении к базе данных.

0
Kristoffer Bohmann