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