在 PHP MySQL 表中計算行數
-
使用 PDO 的
fetchColumn()
方法計算 MySQL 表中的總行數 -
使用過程方法使用
mysqli_num_rows()
函式對 MySQL 表中的行數進行計數 -
使用物件導向的方法通過
num_rows
屬性對錶中的行數進行計數
我們將介紹一種使用 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 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