在 PHP MySQL 表中計算行數

Subodh Poudel 2023年1月30日 2021年4月29日
  1. 使用 PDO 的 fetchColumn() 方法計算 MySQL 表中的總行數
  2. 使用過程方法使用 mysqli_num_rows() 函式對 MySQL 表中的行數進行計數
  3. 使用物件導向的方法通過 num_rows 屬性對錶中的行數進行計數
在 PHP MySQL 表中計算行數

我們將介紹一種使用 fetchColumn()COUNT() 方法對 PHP 中 MySQL 表中所有行進行計數的方法。fetchColumn() 函式由 PDO(PHP 資料物件)給出,而 COUNT() 方法是一個 SQL 函式。PDO 是連線資料庫和後端的一種物件導向的方法。該方法非常靈活,因為 PDO 與 12 個不同的資料庫系統相容。

我們將演示使用 mysqli_num_rows() 函式對錶中的所有行進行計數的另一種方法。該方法使用一種物件導向的方法,通過 mysqli() 函式與伺服器建立資料庫連線。但是,其餘過程將按程式進行。

我們將演示一種使用 PHP 中的 num_rows 屬性對錶中所有行進行計數的方法。此方法遵循完整的物件導向的實踐來連線資料庫並計算總行數。在此方法中使用 prepared 語句可以使它免受 SQL 注入漏洞的影響。

使用 PDO 的 fetchColumn() 方法計算 MySQL 表中的總行數

PDO 是將資料庫與 PHP 伺服器連線的物件導向的方法之一。我們可以使用 PDO 中可用的 fetchColumn() 方法對錶的行進行計數。首先,我們建立一個資料庫,並在表中填充資料。然後,我們使用正確的主機,資料庫使用者名稱,資料庫密碼和資料庫名稱來建立資料庫連線。我們使用 PDO 物件的例項來儲存連線。一旦確定資料庫連線正常,就使用 COUNT() 函式查詢 SQL 語句並執行它。COUNT() 函式將*作為引數,對指定表中的所有行進行計數。然後,我們使用 fetchColumn() 方法顯示錶中的行數。

以下說明假定與伺服器建立了資料庫連線。資料庫的表中有兩行。

MariaDB [oop]> select * from users;
+----+-----------+------------+------------+
| id | firstname | lastname   | dob        |
+----+-----------+------------+------------+
|  1 | Dan    	 |  James     | 1998-08-23 |
|  2 | Dean   	 | Henderson  | 2000-03-30 |
+----+-----------+----------+--------------+
2 rows in set (0.003 sec)

例如,在 Test.php 中,編寫一個名為 Test 的類,該類繼承了 DB 類。在類內編寫一個公共函式 getRowsNumber()。分配變數 $sql 並使用 SELECT 語句編寫查詢以從 users 表中選擇所有內容。在 SELECT 語句中使用 COUNT(*) 來計算行數。使用 connect 函式從 DB.php 獲取連線,並使用 query() 函式查詢上面編寫的 SQL 命令。將這些任務分配給 $stmt 變數。使用 $stmt 變數呼叫 fetchColumn() 方法並顯示結果。

在下面的示例中,超類 DB 包含構成資料庫連線的 connect() 方法。從另一個 php 檔案中呼叫 getRowsNumber() 函式,方法是:

$testObj = new Test();
$testObj->getRowsNumber()

示例程式碼:

# php 7.*
<?php
class Test extends DB {
    public function getRowsNumber() {
        $sql = "SELECT COUNT(*) FROM users";
        $stmt = $this->connect()->query($sql);
        $count = $stmt->fetchColumn();
        print $count;
    }
}

輸出:

The total number of rows is: 2

使用過程方法使用 mysqli_num_rows() 函式對 MySQL 表中的行數進行計數

我們可以在 PHP 中使用 mysqli_num_rows() 函式對 MySQL 表中的行進行計數。我們可以建立一個 mysqli() 函式的物件來將資料庫與 PHP 伺服器連線。該函式將主機名,使用者名稱,密碼和資料庫名作為引數。我們編寫 SQL 語句以選擇表中的每一行。我們使用 mysqli_query() 函式來使用資料庫連線並執行查詢。然後,我們使用 mysql_num_rows() 函式對行數進行計數並顯示出來。

下面的示例使用與第一種方法相同的資料庫,相同的表和該表中的相同資料。

例如,將主機名、使用者名稱、密碼和資料庫名分別分配給變數 $host$username$password$database。使用 new 關鍵字建立 mysqli() 函式的物件,並將變數作為函式的引數傳遞。在 $conn 變數中分配物件的值。編寫一個 SQL 查詢以從 $sql 變數的 users 表中選擇所有內容。使用變數 $result 來儲存 mysqli_query() 函式,該函式接受 $conn$sql 變數。使用 if 條件檢查 $result 變數的布林值。在 if 條件內,使用帶有 $request 變數的 mysqli_num_rows() 作為引數,並將其分配給 $rowcount 變數。列印 $rowcount 變數。

程式碼示例:

#php 7.x
<?php
$conn = new mysqli($host, $username, $password, $database);
$sql = "SELECT * FROM users";
if ($result=mysqli_query($conn,$sql)) {
    $rowcount=mysqli_num_rows($result);
    echo "The total number of rows are: ".$rowcount; 
}
?>

輸出:

The total number of rows are: 2

使用物件導向的方法通過 num_rows 屬性對錶中的行數進行計數

我們可以在 PHP 中使用 num_rows 屬性來計算 MySQL 表中的行數。這種方法使用物件導向的方法。該方法在建立資料庫連線和編寫 SQL 查詢方面與第二種方法非常相似。準備語句的使用與第二種方法不同。我們使用 prepare() 函式來建立一條準備好的語句,使用 execute() 函式來執行該準備好的語句,並使用 store_result() 函式來儲存結果。

例如,將主機名、使用者名稱、密碼和資料庫名分別分配給變數 $host$username$password$database。使用 new 關鍵字建立 mysqli() 函式的物件,並將變數作為函式的引數傳遞。在 $conn 變數中分配物件的值。編寫一個 SQL 查詢以從 $sql 變數的 users 表中選擇所有內容。

使用變數 $stmt 來儲存準備好的語句。使用 $conn 變數呼叫 prepare() 函式,該函式將 sql 變數作為引數。使用 if 條件檢查 $stmt 變數的布林值。在 if 條件中,使用 $stmt 變數呼叫 execute() 函式,然後呼叫 store_result() 函式。然後,呼叫 num_rows 屬性並進行列印。

示例程式碼:

#php 7.x
<?php
$conn = new mysqli($host, $username, $password, $database);
$sql = "SELECT * FROM users";
if ($stmt = $conn->prepare($sql)) {
    $stmt->execute();
    $stmt->store_result();
    printf("Number of rows: %d.\n", $stmt->num_rows);
}
?>

輸出:

Number of rows: 2.
Subodh Poudel avatar Subodh Poudel avatar

Subodh is a proactive software engineer, specialized in fintech industry and a writer who loves to express his software development learnings and set of skills through blogs and articles.

LinkedIn

相關文章 - PHP MySQL