En PHP, l'utilisation de PDO (objets de données PHP) pour les opérations de base de données est un moyen très courant. Grâce à l'API fournie par PDO, nous pouvons facilement effectuer des connexions, des requêtes et des opérations de base de données. Lors de la réalisation de requêtes de données, la requête de pagination est une exigence très courante. Cet article présentera comment utiliser Pdostation :: RowCount pour implémenter la fonction de requête de pagination.
Dans PDO, la méthode PDOSTATION :: RowCount renvoie le nombre de lignes affectées par la requête SQL actuelle. Pour sélectionner les requêtes, RowCount renvoie le nombre de lignes dans le résultat de la requête, tandis que pour les opérations d'insertion , de mise à jour ou de suppression , il renvoie le nombre de lignes affectées.
Pour la pagination de requêtes, nous devons généralement connaître le nombre total d'enregistrements dans la base de données qui remplissent les conditions de requête afin de calculer le nombre total de pages. Pdostatement :: RowCount est un moyen simple d'obtenir le nombre total d'enregistrements.
L'idée de base de la requête de pagination est: contrôler la plage d'enregistrements de la requête à travers la limite et le décalage , et pour utiliser RowCount pour obtenir le nombre total d'enregistrements qui remplissent les conditions, calculant ainsi le nombre total de pages. Cela peut réaliser le chargement par lots des données, en réduisant les frais généraux de chargement de grandes quantités de données en même temps.
Les étapes courantes pour la requête de pagination sont les suivantes:
Obtenez le nombre total d'enregistrements : interrogez le nombre total d'enregistrements qui remplissent les conditions et utilisent Pdostatement :: RowCount pour obtenir le nombre d'enregistrements.
Calculez le nombre total de pages : Calculez le nombre total de pages en fonction du nombre total d'enregistrements et du nombre d'enregistrements affichés sur chaque page.
Obtenez les données de la page actuelles : utilisez la limite et le décalage pour obtenir les données de page actuelles en fonction du numéro de page actuel et du nombre d'enregistrements affichés par page.
Vous trouverez ci-dessous un exemple simple de mise en œuvre de requête. Supposons que nous ayons une table de base de données utilisateurs qui contient les informations de base de l'utilisateur. Nous utiliserons Pdostatement :: RowCount pour obtenir le nombre total d'enregistrements et charger les données via une requête de pagination.
<?php
// Paramètres de connexion de la base de données
$host = 'localhost';
$dbname = 'your_database';
$username = 'root';
$password = '';
// créer PDO Exemple
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
exit;
}
// Obtenez le numéro de page actuel,La valeur par défaut est la première page
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$limit = 10; // Affiché par page 10 Enregistrer
$offset = ($page - 1) * $limit; // Calculer le décalage
// Obtenez le nombre total d'enregistrements
$stmt = $pdo->query("SELECT COUNT(*) FROM users");
$totalRecords = $stmt->fetchColumn(); // utiliser rowCount Obtenez le nombre total d'enregistrements
$totalPages = ceil($totalRecords / $limit); // Calculez le nombre total de pages
// Obtenez les données de la page actuelle
$stmt = $pdo->prepare("SELECT * FROM users LIMIT :limit OFFSET :offset");
$stmt->bindParam(':limit', $limit, PDO::PARAM_INT);
$stmt->bindParam(':offset', $offset, PDO::PARAM_INT);
$stmt->execute();
// Données de sortie sur la page actuelle
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo 'ID: ' . $row['id'] . ' | Name: ' . $row['name'] . '<br>';
}
// Informations de pagination de sortie
echo "<br>Page $page of $totalPages<br>";
// Lien de pagination de sortie
if ($page > 1) {
echo '<a href="?page=' . ($page - 1) . '">Previous</a> ';
}
if ($page < $totalPages) {
echo '<a href="?page=' . ($page + 1) . '">Next</a>';
}
?>
Connexion de la base de données : nous créons des connexions de base de données via PDO .
Obtenez le nombre total d'enregistrements : d'abord, interrogez le nombre total d'enregistrements dans la base de données via Select Count (*) parmi les utilisateurs , puis utilisez fetchColumn () pour obtenir le premier champ du résultat (c'est-à-dire le nombre total d'enregistrements).
Calcul de la pagination : nous calculons le décalage de décalage $ en fonction de la page Numéro de page actuelle et du nombre d'enregistrements affichés par page $ limite . Le nombre total de pages est calculé par la fonction ceil () .
Interrogez les données de la page actuelle : interrogez les données de la page actuelle via limite et décalage .
Sortie de la page : le lien pages est sorti en fonction du nombre total de pages. Les utilisateurs peuvent cliquer sur le lien pour passer à la page précédente ou à la page suivante.
Optimisation des performances : Dans le cas de volumes de données importants, en utilisant RowCount pour obtenir le nombre total d'enregistrements peut affecter les performances. Si le tableau de données est très important, vous pouvez envisager d'utiliser d'autres solutions d'optimisation, telles que l'interrogation uniquement des données requises et l'utilisation du cache.
Prévention de l'injection SQL : Dans le code ci-dessus, nous avons prétraité les requêtes SQL par préparation et bindparam pour garantir que le risque d'injection SQL est évité.