ホームページ >バックエンド開発 >PHPチュートリアル >mysqli_stmt::num_rows が 0 を返すのはなぜですか?それを修正するにはどうすればよいですか?
動的データベース対話の世界では、問題が発生することは珍しくありませんMySQL クエリから正しい行数を取得します。この問題は、mysqli_stmt::num_rows 関数を使用する場合に特に発生する可能性があります。
開発者は、mysqli_stmt::num_rows 関数が使用されていないケースによく遭遇します。クエリの実行後に結果行があるにもかかわらず、関数は継続的に 0 を返します。この不一致は非常にイライラさせられ、正確なデータの取得と処理を妨げる可能性があります。
解決の鍵この問題は、mysqli_stmt::num_rows の動作を理解することにあります。この関数は、結果セット内の行数を自動的にカウントしません。むしろ、特定の条件に基づいて値を返します:
この問題を解決するには、開発者はクエリの実行後、mysqli_stmt::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(); // Added this line $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::store_result() を組み込むことにより、MySQL サーバーは結果セットをクライアント側のメモリに保存するように指示され、結果セットをクライアント側のメモリに保存できるようになります。その後の処理。これにより、mysqli_stmt::num_rows が保存された結果セット内の行数を正確にカウントし、正しい値を返すことが保証されます。
結論
の重要性を理解するmysqli_stmt::store_result() を使用する場合mysqli_stmt::num_rows は、MySQL データベースを扱う開発者にとって非常に重要です。 mysqli_stmt::store_result() を明示的に呼び出すことで、開発者は正確な行数を確実に取得でき、データベース データを効果的かつ効率的に処理できるようになります。
以上がmysqli_stmt::num_rows が 0 を返すのはなぜですか?それを修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。