ホームページ >バックエンド開発 >PHPチュートリアル >PHP ログイン フォームで「mysqli_stmt::bind_result()」が「バインディングの不一致」エラーをスローするのはなぜですか?
Mysqli_stmt::bind_result() エラー: バインディングの不一致
準備されたステートメントを使用して PHP ログイン フォームを実装しようとすると、ユーザーは次のような問題に遭遇する可能性があります。次のエラー:
mysqli_stmt::bind_result(): Number of bind variables doesn't match number of fields in prepared statement
このエラーは次のことを示していますbind_result() で指定された変数の数と、準備されたステートメントによって返されるフィールドの数との間の不一致。この問題を解決するには、次のコード スニペットを調べてください:
$mysqli = new mysqli("localhost", "root", "", "security"); $stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?"); $username = $_POST['name']; $stmt->bind_param('s', $username); $stmt->execute(); $stmt->bind_result($password, $username); $stmt->fetch();
根本原因:
SELECT ステートメントの誤った構文がエラーの根本原因です。正しい構文は次のとおりです:
SELECT username, password FROM users WHERE username = ?
解決策:
この問題は、SELECT ステートメントのフィールドを「AND」の代わりにカンマで区切ることで解決できます。 」正しいコードを以下に示します。
$mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
SELECT ステートメントの構文が正しいことを確認し、バインド変数の数が準備されたステートメントのフィールドの数と一致することを観察すると、mysqli_stmt::bind_result() エラーが発生します。を防ぐことができます。
以上がPHP ログイン フォームで「mysqli_stmt::bind_result()」が「バインディングの不一致」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。