mysql_real_escape_string не показывает ошибку

Я перемещаю свое приложение с расширения Mysql на PHP PDO. У меня возникла странная проблема. В моей среде разработки у меня есть как сервер db [MySQL], так и веб-сервер в единой системе, где, как и в тестовой среде, веб-серверы и серверы db находятся в разных системах.

Следующий тестовый код отлично работает в среде dev и не работает в тестовой среде.

require "class.DB.php" ; class DbMaster extends DB { public function __construct() { $this->Host = "192.168.1.00"; $this->Database = 'test_database'; $this->User = "root"; $this->Password = "12345"; } } // Creates the instance $db = new DbMaster(); $table = mysql_real_escape_string('persons'); $result_array = $db->query("SELECT Id, Age FROM $table WHERE Id >= :Id", array("Id" => 1)); foreach ($result_array as $rec) { echo '<br>'.$rec["Id"].' -> '.$rec['Age']; } 

В dev mysql_real_escape_string не работает, потому что mysql_connect () не существует.

Но mysql_real_escape_string работает, когда сервер mysql работает локально. Чтобы проверить это в среде dev, я остановил локальную mysql и подключился к удаленной базе данных. Затем я получил следующую ошибку:

 Warning: mysql_real_escape_string(): A link to the server could not be established 

Таким образом, с моей существующей настройкой разработки (как с сервером, так и с сервером db), я не вижу ошибок, связанных с PDO.

Любой способ решить эту проблему.

mysql_real_escape_string() пытается открыть соединение с сервером с mysql_connect() если соединение отсутствует. Значения по умолчанию для mysql_connect() – это «localhost» и «root» без пароля.

Если у вас есть учетная запись root без пароля в вашей среде разработки (это довольно распространенная настройка), это будет работать без проблем, поскольку соединение может быть оценено.

С другой стороны, в живой среде пользователь root надеется установить пароль, поэтому этот вызов завершится с ошибкой.

В этом случае mysql_real_escape_string() вернет false вместо вашего экранированного значения.

Решение: используйте эквивалент функции mysqli или PDO. Или откройте дополнительное соединение, используя mysql_connect() с действительными учетными данными, так что mysql_real_escape_string() может использовать его.