ホームページ  >  記事  >  バックエンド開発  >  INSERT クエリで「バインド変数の数がフィールドの数と一致しません」というエラーが発生するのはなぜですか?

INSERT クエリで「バインド変数の数がフィールドの数と一致しません」というエラーが発生するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-28 09:41:29966ブラウズ

Why Am I Getting a

INSERT クエリで問題が発生する: 準備されたステートメントと互換性のないバインド変数の数

PHP コードでは、次のステートメント間の不一致を示すエラー メッセージが表示されます。準備されたステートメント内のバインド変数とフィールドの数。具体的には、警告は次のようになります。

「警告: mysqli_stmt::bind_result(): バインド変数の数が準備されたステートメントのフィールドの数と一致しません。」

このエラーは次のコードで発生します。 :

if($stmt = $conn -> prepare("INSERT INTO login(user, pass) VALUES(?, ?)")) {

  /* Bind parameters s - string, b - blob, i - int, etc */
  $stmt -> bind_param("ss", $user, $pw);

  /* Execute it */
  $stmt -> execute();

  /* Bind results */
  $stmt -> bind_result($user, $pw);

  /* Close statement */
  $stmt -> close();
  $userId = $conn->insert_id;
}

問題の理解

このエラーは、何も返さないステートメントに結果変数 ($user および $pw) をバインドしようとしたことが原因で発生します。結果。この場合、INSERT クエリには SELECT 句や値を返すストアド プロシージャがありません。したがって、結果変数をバインドする必要はありません。

問題の解決

問題を解決するには、結果変数をバインドする行を削除するだけです:

$stmt -> bind_result($user, $pw);

この行を削除すると、バインド変数の数 (0) と準備されたステートメント内のフィールドの数 (これも 0) の不一致が解消されます。これによりエラーが解決され、コードが正常に実行できるようになります。

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

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