ホームページ > バックエンド開発 > PHPチュートリアル > バインド変数の数が結果セットの列と一致しない場合、「mysqli_stmt::bind_result()」がエラーをスローするのはなぜですか?

バインド変数の数が結果セットの列と一致しない場合、「mysqli_stmt::bind_result()」がエラーをスローするのはなぜですか?

Susan Sarandon
リリース: 2024-12-11 09:01:09
オリジナル
197 人が閲覧しました

Why Does `mysqli_stmt::bind_result()` Throw an Error When the Number of Bind Variables Doesn't Match the Result Set Columns?

mysqli_stmt::bind_result() のバインディング変数の不一致

PHP で、mysqli_stmt::bind_result() を使用して準備されたステートメントを実行するとき、バインド変数の数は、結果セット内のフィールド。一致しない場合、「mysqli_stmt::bind_result(): バインド変数の数が準備されたステートメントのフィールドの数と一致しません」というエラーがスローされます。

この問題を解決するには、数値がbind_result() のバインド変数の数は、クエリによって返される列の数と一致します。次の PHP コードを考えてみましょう:

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

この例では、準備されたステートメントはユーザー名とパスワードの 2 つの列を取得します。ただし、bind_result() で指定されるバインド変数 $username は 1 つだけです。これを修正するには、$password の 2 番目のバインド変数を追加します:

$stmt->bind_result($username, $password); // Correct number of bind variables
ログイン後にコピー

SELECT ステートメントの構文は次のとおりです: SELECT field1, field2, ... fieldN FROM table_name WHERE .... 各フィールドは区切る必要があります。 AND 条件ではなく、カンマで指定します。

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

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