ホームページ >バックエンド開発 >PHPチュートリアル >バインド変数の数が選択されたフィールドの数と一致しない場合、「mysqli_stmt::bind_result()」が失敗するのはなぜですか?
mysqli_stmt::bind_result() のエラーについて
PHP の MySQLi 拡張機能でプリペアド ステートメントを使用する場合、エラー「」が発生することがあります。 mysqli_stmt::bind_result(): バインド変数の数準備されたステートメントのフィールドの数と一致しません。」この問題は、クエリで予期される変数の数が、結果にバインドされている変数の数と一致しない場合に発生します。
提供されたコードの分析
提供されたコード内、問題はステートメントを準備するために使用された SELECT ステートメントにありました:
$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");
このステートメントでは、SELECT 句で 2 つが指定されています。 「ユーザー名」と「パスワード」フィールド。ただし、使用されたバインド変数は 1 つだけです ($username):
$stmt->bind_param('s', $username);
問題の解決
問題を解決するには、SELECT 句を次のように変更する必要があります。結果にバインドされているフィールドのみ。この場合、必要なのは「ユーザー名」のみです:
$stmt = $mysqli->prepare("SELECT username FROM users WHERE username = ?");
この変更により、クエリ内のフィールドの数がバインド変数の数と一致し、エラーが解決されます。
補足事項
以上がバインド変数の数が選択されたフィールドの数と一致しない場合、「mysqli_stmt::bind_result()」が失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。