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