在 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