Compter les lignes dans MySQL PHP

Subodh Poudel 30 janvier 2023
  1. Utilisez la méthode fetchColumn() de PDO pour compter le nombre total de lignes dans une table MySQL
  2. Utilisez une méthode procédurale pour compter le nombre de lignes dans la table MySQL en utilisant la fonction mysqli_num_rows()
  3. Utilisez une méthode orientée objet pour compter le nombre de lignes dans une table en utilisant la propriété num_rows
Compter les lignes dans MySQL PHP

Nous allons introduire une méthode pour compter toutes les lignes d’une table en MySQL en PHP en utilisant les méthodes fetchColumn() et COUNT(). La fonction fetchColumn() est donnée par PDO (PHP Data Objects) et la méthode COUNT() est une fonction SQL. PDO est une manière orientée objet de connecter la base de données et le backend. Cette méthode est flexible car PDO est compatible avec 12 systèmes de bases de données différents.

Nous allons démontrer une autre méthode pour compter toutes les lignes d’une table en utilisant la fonction mysqli_num_rows(). Cette méthode utilise une méthode orientée objet pour établir la connexion de la base de données avec le serveur en utilisant la fonction mysqli(). Cependant, le reste du processus se fait de manière procédurale.

Nous allons montrer un moyen de compter toutes les lignes d’une table en utilisant la propriété num_rows en PHP. Cette méthode suit la pratique complète orientée objet pour connecter la base de données et compter le nombre total de lignes. L’utilisation de l’instruction préparée dans cette méthode la met à l’abri de la vulnérabilité de l’injection SQL.

Utilisez la méthode fetchColumn() de PDO pour compter le nombre total de lignes dans une table MySQL

PDO est l’un des moyens orientés objet de connecter la base de données au serveur PHP. On peut utiliser la méthode fetchColumn() disponible dans PDO pour compter les lignes de la table. Tout d’abord, nous créons une base de données et remplissons la table avec des données. Ensuite, nous configurons la connexion à la base de données en utilisant l’hôte, le nom d’utilisateur, le mot de passe de base de données et le nom de base de données corrects. Nous utilisons une instance d’un objet PDO pour stocker la connexion. Une fois que nous nous sommes assurés que la connexion à la base de données fonctionne, nous interrogeons l’instruction SQL à l’aide de la fonction COUNT() et l’exécutons. La fonction COUNT() prend le * comme paramètre qui compte toutes les lignes de la table spécifiée. Ensuite, nous utilisons la méthode fetchColumn() pour afficher le nombre de lignes dans le tableau.

Les instructions ci-dessous supposent qu’une connexion de base de données avec le serveur est établie. Il y a deux lignes dans le tableau dans la base de données.

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)

Par exemple, dans Test.php écrivez une classe nommée Test qui hérite de la classe DB. Écrivez une fonction publique getRowsNumber() à l’intérieur de la classe. Assignez une variable $sql et écrivez une requête à l’aide de l’instruction SELECT pour tout sélectionner dans la table users. Utilisez COUNT(*) dans l’instruction SELECT pour compter le nombre de lignes. Utilisez la fonction connect pour obtenir la connexion depuis DB.php et interrogez la commande SQL écrite ci-dessus en utilisant la fonction query(). Affectez ces tâches à une variable $stmt. Utilisez la variable $stmt pour appeler la méthode fetchColumn() et afficher le résultat.

Dans l’exemple ci-dessous, la superclasse DB contient une méthode connect() qui contient la connexion à la base de données. La fonction getRowsNumber() est appelée depuis un autre fichier php comme:

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

Exemple de code:

# 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;
    }
}

Production:

The total number of rows is: 2

Utilisez une méthode procédurale pour compter le nombre de lignes dans la table MySQL en utilisant la fonction mysqli_num_rows()

Nous pouvons utiliser la fonction mysqli_num_rows() en PHP pour compter les lignes dans une table MySQL. Nous pouvons créer un objet de la fonction mysqli() pour connecter la base de données au serveur PHP. La fonction prend le nom d’hôte, le nom d’utilisateur, le mot de passe et le nom de la base de données comme paramètres. Nous écrivons l’instruction SQL pour sélectionner chaque ligne de la table. Nous utilisons la fonction mysqli_query() pour utiliser la connexion à la base de données et exécuter la requête. Ensuite, nous utilisons la fonction mysql_num_rows() pour compter le nombre de lignes et l’afficher.

L’exemple ci-dessous utilise la même base de données, la même table et les mêmes données dans la table que dans la première méthode.

Par exemple, attribuez respectivement le nom d’hôte, le nom d’utilisateur, le mot de passe et le nom de la base de données aux variables $host, $username, $password et $database. Créez un objet de la fonction mysqli() en utilisant le mot-clé new et passez les variables comme paramètres de la fonction. Attribuez la valeur de l’objet dans la variable $conn. Ecrivez une requête SQL pour tout sélectionner dans la table users dans la variable $sql. Utilisez une variable $result pour stocker la fonction mysqli_query() qui prend les variables $conn et $sql. Vérifiez la valeur booléenne de la variable $result en utilisant la condition if. Dans la condition if, utilisez mysqli_num_rows() avec la variable $request comme paramètre et affectez-la à la variable $rowcount. Imprimez la variable $rowcount.

Exemple de code:

#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; 
}
?>

Production:

The total number of rows are: 2

Utilisez une méthode orientée objet pour compter le nombre de lignes dans une table en utilisant la propriété num_rows

Nous pouvons utiliser la propriété num_rows en PHP pour compter le nombre de lignes dans une table MySQL. Cette approche utilise la méthode orientée objet. La méthode est assez similaire à la deuxième méthode pour créer la connexion à la base de données et écrire la requête SQL. L’utilisation d’instructions préparées diffère cette méthode de la seconde. Nous utilisons la fonction prepare() pour créer une instruction préparée, la fonction execute() pour exécuter l’instruction préparée et la fonction store_result() pour stocker le résultat.

Par exemple, attribuez respectivement le nom d’hôte, le nom d’utilisateur, le mot de passe et le nom de la base de données aux variables $host, $username, $password et $database. Créez un objet de la fonction mysqli() en utilisant le mot-clé new et passez les variables comme paramètres de la fonction. Attribuez la valeur de l’objet dans la variable $conn. Ecrivez une requête SQL pour tout sélectionner dans la table users dans la variable $sql.

Utilisez une variable $stmt pour stocker l’instruction préparée. Utilisez $conn vairable pour appeler la fonction prepare() qui prend la variable sql comme paramètre. Vérifiez la valeur booléenne de la variable $stmt en utilisant la condition if. Dans la condition if, utilisez la variable $stmt pour appeler la fonction execute() puis la fonction store_result(). Et puis, appelez la propriété num_rows et imprimez-la.

Exemple de code:

#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);
}
?>

Production:

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

Article connexe - PHP MySQL