MySQLPHP の行をカウントする

Subodh Poudel 2023年1月30日
  1. PDO の fetchColumn() メソッドを使用して、MySQL テーブルの行の総数をカウントする
  2. 手続き型メソッドを使用して、mysqli_num_rows() 関数を使用して MySQL テーブルの行数をカウントする
  3. オブジェクト指向の方法を使用して、num_rows プロパティを使用してテーブル内の行数をカウントする
MySQLPHP の行をカウントする

fetchColumn() および COUNT() メソッドを使用して、PHP の MySQL のテーブルからすべての行をカウントするメソッドを紹介します。fetchColumn() 関数は PDO(PHP Data Objects)によって提供され、COUNT() メソッドは SQL 関数です。PDO は、データベースとバックエンドを接続するオブジェクト指向の方法です。PDO は 12 の異なるデータベースシステムと互換性があるため、この方法は柔軟性があります。

mysqli_num_rows() 関数を使用して、テーブルからすべての行をカウントする別の方法を示します。このメソッドは、オブジェクト指向の方法を使用して、mysqli() 関数を使用してサーバーとのデータベース接続を確立します。ただし、残りのプロセスは手続き的に行われます。

PHP の num_rows プロパティを使用して、テーブルからすべての行をカウントする方法を示します。このメソッドは、完全なオブジェクト指向の手法に従ってデータベースを接続し、行の総数をカウントします。このメソッドで prepared ステートメントを使用すると、SQL インジェクションの脆弱性から安全になります。

PDO の fetchColumn() メソッドを使用して、MySQL テーブルの行の総数をカウントする

PDO は、データベースを PHP サーバーに接続するためのオブジェクト指向の方法の 1つです。PDO で使用可能な fetchColumn() メソッドを使用して、テーブルの行をカウントできます。まず、データベースを作成し、テーブルにデータを入力します。次に、正しいホスト、データベースユーザー名、データベースパスワード、およびデータベース名を使用してデータベース接続を設定します。PDO オブジェクトのインスタンスを使用して接続を保存します。データベース接続が機能していることを確認したら、COUNT() 関数を使用して SQL ステートメントをクエリして実行します。COUNT() 関数は、指定されたテーブルのすべての行をカウントするパラメーターとして*を取ります。次に、fetchColumn() メソッドを使用して、テーブルの行数を表示します。

以下の手順は、サーバーとのデータベース接続が確立されていることを前提としています。データベースのテーブルには 2つの行があります。

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 に、DB クラスを継承する Test という名前のクラスを記述します。クラス内にパブリック関数 getRowsNumber() を記述します。変数 $sql を割り当て、SELECT ステートメントを使用してクエリを記述し、users テーブルからすべてを選択します。SELECT ステートメントで COUNT(*) を使用して、行数をカウントします。connect 関数を使用して DB.php から接続を取得し、query() 関数を使用して上記の SQL コマンドをクエリします。これらのタスクを $stmt 変数に割り当てます。$stmt 変数を使用して fetchColumn() メソッドを呼び出し、結果を表示します。

以下の例では、スーパークラス DB にデータベース接続を継続する connect() メソッドが含まれています。getRowsNumber() 関数は、次のように別の php ファイルから呼び出されます。

$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 を使用して、$conn 変数と $sql 変数を受け取る mysqli_query() 関数を格納します。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 クエリを作成する 2 番目の方法と非常によく似ています。プリペアドステートメントの使用は、この方法が 2 番目の方法とは異なります。prepare() 関数を使用してプリペアドステートメントを作成し、execute() 関数を使用してプリペアドステートメントを実行し、store_result() 関数を使用して結果を保存します。

たとえば、ホスト名、ユーザー名、パスワード、およびデータベース名を、それぞれ変数 $host$username$password、および $database に割り当てます。new キーワードを使用して mysqli() 関数のオブジェクトを作成し、関数のパラメーターとして変数を渡します。$conn 変数にオブジェクトの値を割り当てます。SQL クエリを記述して、$sql 変数の users テーブルからすべてを選択します。

変数 $stmt を使用して、プリペアドステートメントを格納します。$conn 変数を使用して、sql 変数をパラメーターとして受け取る prepare() 関数を呼び出します。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
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