mysqli_num_rows

(PHP 5)

mysqli_num_rows --  Gets the number of rows in a result

Description

Procedural style:

int mysqli_num_rows ( mysqli result )

Object oriented style (property):

class mysqli {

int num_rows

}

Returns the number of rows in the result set.

The use of mysqli_num_rows() depends on whether you use buffered or unbuffered result sets. In case you use unbuffered resultsets mysqli_num_rows() will not correct the correct number of rows until all the rows in the result have been retrieved.

返回值

Returns number of rows in the result set.

注: If the number of rows is greater than maximal int value, the number will be returned as a string.

范例

例子 1. Object oriented style

<?php
$mysqli
= new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (
$result = $mysqli->query("SELECT Code, Name FROM Country ORDER BY Name")) {

    
/* determine number of rows result set */
    
$row_cnt = $result->num_rows;

    
printf("Result set has %d rows.\n", $row_cnt);

    
/* close result set */
    
$result->close();
}

/* close connection */
$mysqli->close();
?>

例子 2. Procedural style

<?php
$link
= mysqli_connect("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    
printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (
$result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) {

    
/* determine number of rows result set */
    
$row_cnt = mysqli_num_rows($result);

    
printf("Result set has %d rows.\n", $row_cnt);

    
/* close result set */
    
mysqli_free_result($result);
}

/* close connection */
mysqli_close($link);
?>

上例将输出:

Result set has 239 rows.

add a note add a note User Contributed Notes
jon at fuck dot org
05-Jan-2006 02:39
this is stated in the main mysqli section under constants, but isn't stated here: to get a get a buffered result set, use MYSQLI_STORE_RESULT in your query or call mysqli_store_result() when fetching the result set from a prepared query. this allows you to get the right rowcount every time, since your result set is going to be atomic.

don't forget that whether or not you really want to buffer the result set is a different question altogether.