ホームページ > データベース > mysql チュートリアル > 「mysqli_stmt::bind_result()」が「バインド変数の数がフィールドの数と一致しません」エラーをスローするのはなぜですか?

「mysqli_stmt::bind_result()」が「バインド変数の数がフィールドの数と一致しません」エラーをスローするのはなぜですか?

DDD
リリース: 2024-12-17 20:11:10
オリジナル
339 人が閲覧しました

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

mysqli_stmt::bind_result() エラー: バインド変数とプリペアド ステートメント フィールドの一致

ログイン メカニズムにプリペアド ステートメントを利用しようとしたときPHP では、次のエラーが発生する場合があります。 「mysqli_stmt::bind_result(): バインド変数の数が準備されたステートメントのフィールドの数と一致しません。」これは、結果でバインドしている変数の数と準備されたステートメントで予期されるフィールドの数との間に不一致があることを示しています。

間違ったコードと分析:

提供されたコードは問題を示しています:

$stmt = $mysqli->prepare("SELECT username AND password FROM users WHERE username = ?");
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($password, $username);
ログイン後にコピー

「AND」キーワードが正しく使用されていないためにエラーが発生します。 SELECT 句。フィールドを「AND」で区切る代わりに、カンマを使用する必要があります。

正しいコードと説明:

このエラーを解決するには、SELECT 句を次のように変更します。 :

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
ログイン後にコピー

この変更により、準備されたステートメントはユーザー名とパスワードの 2 つのフィールドが返されることを期待するようになりました。その後、mysqli_stmt::bind_result() を使用して 2 つの変数をそれらに安全にバインドできます。

$stmt->bind_result($username, $password);
ログイン後にコピー

バインド変数の数が準備されたステートメント内のフィールドの数と一致することを確認することで、「数値」バインド変数の数が準備されたステートメントのフィールドの数と一致しません」エラー。

以上が「mysqli_stmt::bind_result()」が「バインド変数の数がフィールドの数と一致しません」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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