ホームページ > バックエンド開発 > PHPチュートリアル > 「prepare」、「bind_param」、「bind_result」、「fetch」を使用した後、「mysqli_stmt::num_rows」が一貫してゼロを返すのはなぜですか?

「prepare」、「bind_param」、「bind_result」、「fetch」を使用した後、「mysqli_stmt::num_rows」が一貫してゼロを返すのはなぜですか?

DDD
リリース: 2024-12-08 05:43:09
オリジナル
290 人が閲覧しました

Why Does `mysqli_stmt::num_rows` Consistently Return Zero After Using `prepare`, `bind_param`, `bind_result`, and `fetch`?

mysqli num_rows が一貫してゼロを返す

質問:

MySQLi の prepare、bind_param を使用する場合、 num_rows、bind_result、およびデータベースから行を取得するための fetch メソッドですが、num_rows が常に 0 を返すのはなぜですか?

答え:

MySQLi 呼び出しの使用法が間違っています。この問題を解決するには、行数を取得する前に次の手順を実行します。

$stmt->execute();
$stmt->store_result();
ログイン後にコピー

mysqli_stmt::num_rows が正しく動作するには、store_result() の呼び出しが不可欠です。

こちらこれは、store_result() 呼び出しが追加された改訂されたコード スニペットです:

if ($stmt = $mysqli->prepare("SELECT id, title, visible, parent_id FROM content WHERE parent_id = ? ORDER BY page_order ASC;")) {
    $stmt->bind_param('s', $data->id);
    $stmt->execute();
    $stmt->store_result();
    $num_of_rows = $stmt->num_rows;
    $stmt->bind_result($child_id, $child_title, $child_visible, $child_parent);

    while ($stmt->fetch()) {
        // Code here
    }

    echo($num_of_rows);

    $stmt->close();
}
ログイン後にコピー

を参照してください。詳細については、mysqli_stmt::num_rows の公式ドキュメントを参照してください。

以上が「prepare」、「bind_param」、「bind_result」、「fetch」を使用した後、「mysqli_stmt::num_rows」が一貫してゼロを返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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