mysqli_result::$num_rows

mysqli_num_rows

(PHP 5, PHP 7, PHP 8)

mysqli_result::$num_rows -- mysqli_num_rows获取结果集中的行数

说明

面向对象风格

过程式风格

mysqli_num_rows(mysqli_result $result): int|string

返回结果集中的行数。

mysqli_num_rows() 的行为取决于使用的是缓冲结果集还是非缓冲结果集。对于非缓冲结果集,此函数返回 0,除非所有行都已从服务器中获取。

参数

result

仅限过程式风格:由 mysqli_query()mysqli_store_result()mysqli_use_result()mysqli_stmt_get_result() 返回的 mysqli_result 对象。

返回值

表示已获取行数的 int。在非缓冲模式下返回 0,除非所有行都已从服务器中获取。

注意:

如果行数大于 PHP_INT_MAX,则该数字将作为 string 返回。

示例

示例 #1 面向对象风格

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

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

/* 获取结果集中的行数 */
$row_cnt = $result->num_rows;

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

示例 #2 过程式风格

<?php

mysqli_report
(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");

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

/* 获取结果集中的行数 */
$row_cnt = mysqli_num_rows($result);

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

上面的示例将输出

Result set has 239 rows.

注释

注意:

mysqli_stmt_num_rows() 函数相比,此函数没有面向对象的 method 形式。在面向对象风格中,使用 getter 属性。

参见

添加注释

用户贡献的注释 3 notes

borisigna
13 年前
如果您在使用 num_rows 时遇到问题,则必须先声明 ->store_result()。

<?php
$mysqli
= new mysqli("localhost","root", "", "tables");

$query = $mysqli->prepare("SELECT * FROM table1");
$query->execute();
$query->store_result();

$rows = $query->num_rows;

echo
$rows;

// 例如返回 4
?>
min0u
7 年前
此函数不适用于与 SQL_CALC_FOUND_ROWS 一起使用的 LIMIT。如果您想获取找到的总行数,则必须手动执行,示例

<?php
public function errorList(int $limit=25,int $offset=0){
$errorList = array();
$result = $this->con->query("SELECT SQL_CALC_FOUND_ROWS id, erreur FROM Erreurs ORDER BY id DESC LIMIT $limit OFFSET $offset");
while(
$row = $result->fetch_assoc()){
$errorList[] = new Erreur($row);
}
$result->free();
// $foundRows = $result->num_rows; // 25
$foundRows = $this->con->query("SELECT FOUND_ROWS() as foundRows");
$this->foundRows = $foundRows->fetch_assoc(); // 178
return $errorList;
}
?>
justso at inbox dot ru
8 年前
在 PHP 5.3.8 中,在检查 mysqli_result::$num_rows 时遇到了意外的麻烦。
如果查询结果为空,则结果的 var_dump 将如下所示:
class mysqli_result#5 (5) {
public $current_field => NULL
public $field_count => NULL
public $lengths => NULL
public $num_rows => NULL
public $type => NULL
}
但 var_dump($result->num_rows) 将给出整数类型的零,而不是 NULL
int(0)
To Top