mysqli_stmt_bind_result()のパラメーター数が間違っています

プラッテリスト

私のホスティング会社はMySQLndを提供していないので、コードのいくつかを変更する必要がありました。

これが私のコードです:

<?php
include_once 'db.php';
$sql = "SELECT * FROM table1 ORDER BY id DESC";
$stmt = mysqli_stmt_init($connect);
if (!mysqli_stmt_prepare($stmt, $sql)) {
    echo "SQL statement failed";
} else{
    mysqli_stmt_execute($stmt);
    $result = mysqli_stmt_get_result($stmt);
    while ($row = mysqli_fetch_assoc($result)) {
    ...

$result = mysqli_stmt_get_result($stmt);$result = mysqli_stmt_bind_result($stmt);それに変更すると私に与えます

Warning: Wrong parameter count for mysqli_stmt_bind_result()

そして

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, null given

私はこれに2日間取り組んできましたが、初心者のため解決できませんでした。私は何をすべきか?

IncredibleHat

手続き型mysqliを使用してから何年も経っているので、これについては我慢してください...

列パラメータを動的にバインドしてフェッチループを実行する場合(mysqlndはオプションではないため)、ここでのこのコードはそれを実現します。

mysqli_stmt_execute($stmt);

// now before you loop on $stmt->fetch, you must bind all the columns that exist
// to a row which will hold the values during the looping on fetch (yes, confusing)

$row    = array();  // will hold each fetch'd loop result
$params = array();  // something to pass keyed references to $row with
$params[] = $stmt;  // add the $stmt object as first param (for procedural way)

$meta = mysqli_stmt_result_metadata($stmt);// get what those columns will be

while($field = $meta->fetch_field()) {
    if (!isset($row[ $field->name ])) { $row[ $field->name ] = null; } // set if not set
    $params[] = &$row[ $field->name ]; // add reference to keyed row value
}

$meta->close();// metadata no longer needed, close it

call_user_func_array('mysqli_stmt_bind_result', $params);

while (mysqli_stmt_fetch($stmt)) {

    // in here you then have $row to use as before
    echo $row['id'];

}

さて、あなたは私がここでやり過ぎだと思っているかもしれません...はい。この例は、構文を使用して不明なSQL列グラブを処理するためのものSELECT *です。ただし、すべての列が出力されることがわかっている場合は、次のようにwhileループの前に各列をバインドするだけです。

mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $id, $col2, $col3);

while (mysqli_stmt_fetch($stmt)) {

    // in here you then use $id, $col2, $col3
    echo $id;

}

これが、PDOライブラリに切り替えると、物事がひどく簡単になる理由です。ライブラリには、ご存知のように、mysqlnd利用可能なものが大好きな単純なループで、関連付けられたキー名を含む行を単純にフェッチするためのプロビジョニングがあります。ただし、それPDOも選択肢にない場合は、「バインド」と「mysqli」を処理するための苦痛で難解な方法が残されています。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

カスタムmysqliクラスのbind_paramのパラメーター数が間違っています

分類Dev

HY093:パラメータの数が間違っています-位置

分類Dev

オーバーロード関数createDirectStreamの型パラメーターの数が間違っています

分類Dev

PowerShell関数パラメーターで何が間違っていますか?

分類Dev

Xaml解析エラーのパラメータが間違っています

分類Dev

httpパラメータ値の構文が間違っています

分類Dev

フローパターンの引数の数が間違っています

分類Dev

選択関数でパラメーターを渡す方法が間違っていますか?

分類Dev

パラメータを渡す際に何が間違っていますか?

分類Dev

「strstr()のパラメータ数が間違っています」というエラーが表示されるのはなぜですか?

分類Dev

変更された `Chars`イテレータを使用する場合のライフタイムパラメータの数が間違っています

分類Dev

JavaBeanセッターメソッド呼び出しエラー「引数の数が間違っています」

分類Dev

mysqli_stmt :: bind_param():変数の数がプリペアドステートメントのパラメーターの数と一致しません

分類Dev

ライフタイムパラメータの数が間違っています:期待される1、見つかった0

分類Dev

「警告:mysqli_stmt_bind_param()は、パラメーター1がmysqli_stmtであると想定しています。ブール値はで指定されています。」

分類Dev

Rails:ネストされた属性パラメータ内の配列列の引数の数が間違っています(0の場合、1..2が必要です)

分類Dev

MongoDBシャードクラスター内のドキュメントの数が間違っています

分類Dev

mysqli_stmt_bind_result(): バインド変数の数が、準備されたステートメントのフィールドの数と一致しません

分類Dev

SQLパラメータを使用すると、「引数のタイプが間違っています」が返されます

分類Dev

LIKEおよびパラメーターとの一致が間違っています

分類Dev

パラメータとしてopenssl :: rsa :: Rsaを渡すときの型引数の数が間違っています

分類Dev

mysqli_stmt_close()は、パラメーター1がmysqli_stmt、booleanであることを想定しています。

分類Dev

Railsモデルのパラメータの名前が間違っていますか?

分類Dev

TypeScript:ジェネリック関数の型引数が間違ったパラメーターから推測されています

分類Dev

java.sql.SQLException: パラメーターの数が間違っているエラー

分類Dev

DbgHelp:x64で値渡しシンボルの場合、関数パラメーターのアドレスが間違っています

分類Dev

変数のデータ型が間違っていますか?

分類Dev

mysqli_stmt_execute()エラー:execute()は正確に0個のパラメーターを予期し、1個が指定されています

分類Dev

SQL列の名前変更エラー:パラメーター@objnameがあいまいであるか、要求された@objtype(COLUMN)が間違っています

Related 関連記事

  1. 1

    カスタムmysqliクラスのbind_paramのパラメーター数が間違っています

  2. 2

    HY093:パラメータの数が間違っています-位置

  3. 3

    オーバーロード関数createDirectStreamの型パラメーターの数が間違っています

  4. 4

    PowerShell関数パラメーターで何が間違っていますか?

  5. 5

    Xaml解析エラーのパラメータが間違っています

  6. 6

    httpパラメータ値の構文が間違っています

  7. 7

    フローパターンの引数の数が間違っています

  8. 8

    選択関数でパラメーターを渡す方法が間違っていますか?

  9. 9

    パラメータを渡す際に何が間違っていますか?

  10. 10

    「strstr()のパラメータ数が間違っています」というエラーが表示されるのはなぜですか?

  11. 11

    変更された `Chars`イテレータを使用する場合のライフタイムパラメータの数が間違っています

  12. 12

    JavaBeanセッターメソッド呼び出しエラー「引数の数が間違っています」

  13. 13

    mysqli_stmt :: bind_param():変数の数がプリペアドステートメントのパラメーターの数と一致しません

  14. 14

    ライフタイムパラメータの数が間違っています:期待される1、見つかった0

  15. 15

    「警告:mysqli_stmt_bind_param()は、パラメーター1がmysqli_stmtであると想定しています。ブール値はで指定されています。」

  16. 16

    Rails:ネストされた属性パラメータ内の配列列の引数の数が間違っています(0の場合、1..2が必要です)

  17. 17

    MongoDBシャードクラスター内のドキュメントの数が間違っています

  18. 18

    mysqli_stmt_bind_result(): バインド変数の数が、準備されたステートメントのフィールドの数と一致しません

  19. 19

    SQLパラメータを使用すると、「引数のタイプが間違っています」が返されます

  20. 20

    LIKEおよびパラメーターとの一致が間違っています

  21. 21

    パラメータとしてopenssl :: rsa :: Rsaを渡すときの型引数の数が間違っています

  22. 22

    mysqli_stmt_close()は、パラメーター1がmysqli_stmt、booleanであることを想定しています。

  23. 23

    Railsモデルのパラメータの名前が間違っていますか?

  24. 24

    TypeScript:ジェネリック関数の型引数が間違ったパラメーターから推測されています

  25. 25

    java.sql.SQLException: パラメーターの数が間違っているエラー

  26. 26

    DbgHelp:x64で値渡しシンボルの場合、関数パラメーターのアドレスが間違っています

  27. 27

    変数のデータ型が間違っていますか?

  28. 28

    mysqli_stmt_execute()エラー:execute()は正確に0個のパラメーターを予期し、1個が指定されています

  29. 29

    SQL列の名前変更エラー:パラメーター@objnameがあいまいであるか、要求された@objtype(COLUMN)が間違っています

ホットタグ

アーカイブ