ホームページ >バックエンド開発 >PHPチュートリアル >PHP ログイン フォームで「mysqli_stmt::bind_result()」が「バインディングの不一致」エラーをスローするのはなぜですか?

PHP ログイン フォームで「mysqli_stmt::bind_result()」が「バインディングの不一致」エラーをスローするのはなぜですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-24 03:49:27411ブラウズ

Why Does `mysqli_stmt::bind_result()` Throw a

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

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