インターネットの普及に伴い、PHP 言語は広く使用されているプログラミング言語であり、多くの Web サイトやアプリケーションが PHP 言語を使用して設計および開発されています。ただし、PHP の開発プロセスでは、よく問題に遭遇します。その 1 つは、mysql_escape_string() 関数を使用する際のエラー メッセージ「PHP 致命的エラー: 未定義関数 mysql_escape_string() の呼び出し」です。
このエラー メッセージは、mysql_escape_string() 関数が現在の PHP バージョンでは認識できない、または使用できないことを意味します。では、この問題をどうやって解決すればよいでしょうか?
mysql_escape_string() 関数は PHP 5.5 以前で使用されているため、PHP 5.6 以降では動作しない可能性があります。このエラーが発生します。したがって、PHP バージョンを更新することが問題を解決する最良の方法です。次のコマンドを使用して PHP バージョンを更新できます:
sudo apt-get update && sudo apt-get upgrade sudo apt-get install php5.6
上記のコマンドを実行した後、現在のシステムに PHP 5.6 バージョンをインストールし、mysql_escape_string() 関数を使用してこの問題を解決できます。
PHP バージョンをアップグレードしたくない場合は、mysqli_escape_string() 関数を使用して mysql_escape_string() を置き換えることができます。関数。 mysqli_escape_string() 関数の機能は mysql_escape_string() 関数に似ているため、両方とも SQL インジェクション攻撃を防止し、より安全です。以下は mysqli_escape_string() 関数の使用例です。
$username = mysqli_real_escape_string($conn, $_POST['username']; $password = mysqli_real_escape_string($conn, $_POST['password']); $email = mysqli_real_escape_string($conn, $_POST['email']);
このうち、$conn はデータベースに接続する変数、$_POST は POST で渡される配列型パラメータです。 mysqli_escape_string() 関数を通じて SQL ステートメントを記述することにより、SQL インジェクション攻撃を効果的に防止し、データベース内の特殊文字をエスケープできます。
最後に、PDO または他の ORM フレームワーク (Laravel など) を使用して、この問題を解決することもできます。 PDO は PHP が提供するデータベース アクセス抽象化レイヤーであり、データベースをより便利に操作できるようになり、開発者のミスの可能性が減ります。以下は PDO のサンプル コードです。
$username = $_POST['username']; $password = $_POST['password']; $email = $_POST['email']; $stmt = $pdo->prepare("INSERT INTO users (username, password, email) VALUES (:username, :password, :email)"); $stmt->bindParam(':username', $username); $stmt->bindParam(':password', $password); $stmt->bindParam(':email', $email); $stmt->execute();
PDO オブジェクトを使用すると、このエラーを回避する SQL ステートメントを安全に作成できます。
要約すると、上記の 3 つの方法は、「PHP 致命的エラー: 未定義関数 mysql_escape_string() の呼び出し」エラーの解決に役立ち、コードのセキュリティと保守性の向上にも役立ちます。このエラー メッセージが表示された場合は、上記の方法を試して問題を解決してください。
以上がPHP 致命的エラーの解決策: 未定義関数 mysql_escape_string() の呼び出しの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。