ホームページ >バックエンド開発 >PHPチュートリアル >「mysqli_stmt::num_rows」が常に 0 を返すのはなぜですか?

「mysqli_stmt::num_rows」が常に 0 を返すのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-26 06:57:10606ブラウズ

Why Does `mysqli_stmt::num_rows` Always Return 0?

mysqli_stmt::num_rows が常に 0 を返すのはなぜですか?

mysqli_stmt を使用して MySQL クエリによって返される行数を取得しようとすると::num_rows の場合、実際の行が存在するにもかかわらず、ユーザーは一貫して 0 を返す場合があります。 結果。この問題に対処するには、num_rows の前に mysqli_stmt::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
    }

    echo($num_of_rows);

    $stmt->close();
}

公式に記載されているとおりmysqli_stmt::num_rows に関する MySQL ドキュメント、「[...] 結果セット内の行数は、次の呼び出しで確認できます。 num_rows メソッド。これは、store_result を呼び出した後に実行する必要があります。」 mysqli_stmt::store_result() 呼び出しを含めることで、結果セットがクライアントに保存され、行数を正確に決定できるようになります。

以上が「mysqli_stmt::num_rows」が常に 0 を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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