PHP MySQL结果num total rows和split for pages

Is there any way to count and split results without doing 2 query,

im using a query something like this:

$result = mysqli_query($con,"SELECT * from articles WHERE category = '$category'");

    $row = mysqli_fetch_row($result);
    $rows = $row[0];
    $page_rows = 20;
    $last = ceil($rows/$page_rows);
    $pagenum = 1;
    $limit = 'LIMIT ' .($pagenum - 1) * $page_rows .',' .$page_rows;

    $result2 = mysqli_query($con,"SELECT * FROM articles order by id desc $limit");
    while($row = mysqli_fetch_array($result2)) {
    $id = $row['id'];
    }

this is working but i dont like that it has 2 queries, any better idea? thank you

$pagenum = 1;
$rows_on_page = 20;
$start = (($pagenum - 1) * $rows_on_page);
$end = ($pagenum * $rows_on_page);
$result = mysqli_query($con, "SELECT * from articles WHERE category = '$category' ORDER BY id DESC LIMIT $start, $end");
while ($row = mysqli_fetch_array($con,$result) {
    ... do stuff with articles ...
    $pagenum++;
}

The while loop will protect you from going past the end of the records.

try this query,it will return count of records and pagination (title in query is a field name, change it based on your table):

SELECT aa.countt, title FROM articles , (SELECT COUNT(*) AS countt FROM articles WHERE category = '$category' ) AS aa ORDER BY id LIMIT 5,10