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

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

Susan Sarandon
リリース: 2024-12-11 03:56:21
オリジナル
281 人が閲覧しました

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

mysqli_stmt::bind_result(): バインド変数の数が一致しません

準備されたステートメントを使用して PHP ログイン フォームを実装しようとすると、ユーザーは通常、「mysqli_stmt::bind_result(): Number」というエラーが発生します。バインド変数の数が準備されたステートメントのフィールドの数と一致しません。」このエラーは、クエリ結果の保存に使用されるバインド変数の数と、基になる SQL ステートメントによって返される実際のフィールド数との間に不一致があることを示します。

診断コード

$stmt = $mysqli->prepare("SELECT username, password FROM users WHERE username = ?");
$username = $_POST['name'];
$stmt->bind_param('s', $username);
$stmt->execute();
$stmt->bind_result($username, $password); // Incorrect field binding
$stmt->fetch();
ログイン後にコピー

訂正

上記のコードのフィールドに誤りがありますバインディング。 bind_result() メソッドは、SELECT ステートメントによって返される実際のフィールドを反映する必要があります。このシナリオでは、クエリはユーザー名とパスワードの 2 つのフィールドを返します。したがって、正しいコードは次のとおりです。

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

さらなるヒント

  • SQL ステートメントが正しいことを確認してください。バインド変数を表すには、適切な構文と正しい数の疑問符 (?) を使用する必要があります。
  • バインド変数と結果フィールドのデータ型は一致する必要があります。この場合、$username と $password は両方とも文字列である必要があります。
  • SQL インジェクションの脆弱性を防ぐために、常にプリペアド ステートメントを使用してください。

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

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