2024 日本 PHP 研討會

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("結果集有 %d 列。\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 年前
這個函式無法與 `LIMIT` 和 `SQL_CALC_FOUND_ROWS` 一起使用。如果您想取得找到的總列數,您必須手動執行,範例:

<?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