PHP は、Web 開発に広く使用されているオープンソース スクリプト言語です。ただし、Web 開発に PHP を使用する場合、開発者はさまざまなエラーや問題に直面することがよくあります。その中でよくある問題は「PHP Fatal error: Call to unknown function mysql_real_escape_string()」です。
この記事では、このエラーの原因と解決策について説明します。
理由:
MySQLi 拡張機能は、バージョン 5.5 以降の PHP の MySQL 拡張機能を置き換えた、より強力なデータベース拡張機能です。 MySQLi 拡張機能の使用時に mysql_real_escape_string() 関数を使用すると、次のエラーが発生します:
PHP 致命的エラー: 未定義関数 mysql_real_escape_string() への呼び出し
これは、mysql_real_escape_string( ) 関数は MySQL 拡張機能の関数であり、MySQLi 拡張機能には含まれていません。
解決策:
1. 関数を置き換える
この問題を解決するには、まず mysql_real_escape_string() 関数を mysqli_real_escape_string() 関数に置き換える必要があります。 MySQLi 拡張機能の関数。例:
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name');
$name = mysqli_real_escape_string($mysqli, $_POST[' name ']);
$email = mysqli_real_escape_string($mysqli, $_POST['email']);
この方法は比較的単純ですが、多くのコードを変更する必要があり、すでに実装されているプロジェクトには適していません。
2. MySQL 互換モードを使用する
プロジェクトで MySQL 互換モードを使用する場合は、データベースに接続するときにパラメーターを追加することで MySQL 互換モードを有効にすることができます。例:
$mysqli = new mysqli('localhost', 'username', 'password', 'database_name', NULL, '/path/to/mysql/socket', MYSQLI_CLIENT_COMPRESS | MYSQL_CLIENT_IGNORE_SPACE);
この方法では、新しいバージョンの PHP を MySQL 互換モードで実行できますが、他の問題が発生する可能性があります。
3. MySQL 拡張機能をインストールする
プロジェクトで mysql_real_escape_string() 関数を使用する必要がある場合、最良の方法は MySQL 拡張機能をインストールすることです。これを行うには、オペレーティング システムを操作して古い MySQL 拡張機能をインストールする必要があります。
Ubuntu および Debian システムの場合、次のコマンドを実行して拡張機能をインストールできます:
sudo apt-get install php5-mysql
RHEL および CentOS システムの場合、次のコマンドを実行して拡張機能をインストールします:
sudo yum install php-mysql
4. プロジェクトをアップグレードします
プロジェクトをアップグレードするときは、 mysql_real_escape_string() 関数と PDO Safe の代替手段が提供されています。例:
$dbh = new PDO('mysql:host=localhost;dbname=database_name', 'username', 'password');
$name = $dbh-> quote ($_POST['name']);
$email = $dbh->quote($_POST['email']);
上記の方法は、高いセキュリティを保証できます。 , ただし、PDO を完全に理解する必要があるため、追加の時間と労力が必要になります。
概要:
PHP 致命的エラー: 未定義関数 mysql_real_escape_string() の呼び出しはよくあるエラーですが、解決策は多数あります。修正を行う前に、プロジェクトで使用されているデータベース拡張機能を検討し、すべてのソリューションをテストして明らかな副作用がないことを確認する必要があります。
以上がPHP 致命的エラーの解決策: 未定義関数 mysql_real_escape_string() の呼び出しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。