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

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

Susan Sarandon
リリース: 2024-12-04 14:50:10
オリジナル
441 人が閲覧しました

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート