ホームページ >バックエンド開発 >PHPチュートリアル >`mysqli_real_escape_string()` が「正確に 2 つのパラメータ (1 つは指定されている) が必要」とスローされるのはなぜですか?

`mysqli_real_escape_string()` が「正確に 2 つのパラメータ (1 つは指定されている) が必要」とスローされるのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-04 14:50:10488ブラウズ

Why Does `mysqli_real_escape_string()` Throw

「mysqli_real_escape_string() は、正確に 2 つのパラメータを期待しており、1 つは指定されています」エラーの解決

「mysqli_real_escape_string()」関数は、文字列内の特殊文字をエスケープするように設計されています。 SQL インジェクション攻撃。ただし、「mysqli_real_escape_string() は 2 つのパラメータを期待しており、1 つは指定されています。」というエラーを引き起こす可能性がある特定のパラメータ要件があります。

問題分析:

提供されたコードPHP のバージョンをチェックし、それに応じて「mysqli_real_escape_string()」の使用を試みます。ただし、関数呼び出しにはエスケープする文字列のみが含まれており、最初の必須パラメータである mysqli リンクが欠落しています。

ドキュメントの説明:

公式ドキュメントによると、 「mysqli_real_escape_string()」には 2 つが必要ですパラメータ:

  1. mysqli $link: 確立された MySQLi 接続への参照。
  2. string $escapestr: 設定する文字列

解決策:

エラーを解決するには、「mysqli_real_escape_string()」関数を呼び出すときにコードに両方のパラメーターを含める必要があります。更新バージョンは次のとおりです:

if (phpversion() >= '4.3.0') {
    $string = mysqli_real_escape_string($link, $string);
} else {
    $string = mysqli_escape_string($link, $string);
}

mysqli リンクが最初のパラメータとして指定されていることを確認することで、「mysqli_real_escape_string()」関数は入力文字列を適切にエスケープし、SQL インジェクションの脆弱性を防ぎます。

以上が`mysqli_real_escape_string()` が「正確に 2 つのパラメータ (1 つは指定されている) が必要」とスローされるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。