在 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