PHP Conference Japan 2024

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() 函数相比,此函数没有面向对象的成员方法变体。在面向对象风格中,使用 getter 属性。

参见

添加注释

用户贡献的注释 2 条注释

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;
}
?>
To Top