Position actuelle: Accueil> Derniers articles> Utilisez mysqli_stmt :: Préparez-vous à implémenter la requête de pagination

Utilisez mysqli_stmt :: Préparez-vous à implémenter la requête de pagination

gitbox 2025-05-28

Lors du développement d'applications PHP basées sur MySQL, afin d'améliorer l'efficacité de la requête et l'expérience utilisateur de la présentation des données, nous utilisons généralement des requêtes de pagination pour charger les données dans les segments. Par rapport à l'utilisation de la méthode d'épissage directement SQL, l'utilisation de la fonction MySQLI_STMT :: Préparer peut non seulement empêcher efficacement l'injection de SQL, mais également améliorer la lisibilité et le maintien du code. Cet article vous amènera à en savoir plus sur la façon de mettre en œuvre la requête de pagination via mysqli_stmt :: Préparez-le et analysez-le avec des exemples.

1. Concepts de base

Le cœur de la requête de pagination réside dans la clause limite de SQL, dont la syntaxe est:

 SELECT * FROM table_name LIMIT offset, page_size;

dans:

  • Offset : Offset, indiquant quel enregistrement à lire.

  • Page_Size : le nombre d'enregistrements affichés par page.

Lorsque vous utilisez la fonction MySQLI_STMT :: Préparer , car les paramètres de la clause limite ne peuvent pas lier directement les variables, nous devons utiliser quelques astuces pour contourner cette limitation.

2. Préparation

  1. Assurez-vous que vous utilisez l'extension MySQLI et les instructions de prétraitement sont activées.

  2. La connexion de la base de données a été établie.

  3. Il existe un tableau de données pour l'interrogation, comme les utilisateurs .

3. Étapes de mise en œuvre de la requête de pagination

Étape 1: établir une connexion de base de données

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}
?>

Étape 2: Définissez les paramètres de pagination

 <?php
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page_size = 10;
$offset = ($page - 1) * $page_size;
?>

Étape 3: Rédiger des déclarations de prétraitement

Étant donné que les variables dans la clause limite ne peuvent pas être liées via bind_param , nous ne pouvons construire SQL que par piqûre de chaîne. Cependant, vous pouvez toujours utiliser Préparer pour lier d'autres paramètres conditionnels:

 <?php
$sql = "SELECT id, name, email FROM users ORDER BY id DESC LIMIT ?, ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ii", $offset, $page_size);
$stmt->execute();
$result = $stmt->get_result();
?>

Étape 4: résultats de la requête de sortie

 <?php
while ($row = $result->fetch_assoc()) {
    echo "<p>{$row['id']} - {$row['name']} - {$row['email']}</p>";
}
?>

Étape 5: Liens de navigation de pagination

En supposant que le nombre total d'enregistrements est la variable $ total_rows , vous pouvez générer un lien de pagination de la manière suivante:

 <?php
$total_rows = 100; // Habituellement, vous devez interroger séparément pour obtenir le nombre total
$total_pages = ceil($total_rows / $page_size);

for ($i = 1; $i <= $total_pages; $i++) {
    echo "<a href='https://gitbox.net/userlist.php?page=$i'>1 et 1 $i Page</a> ";
}
?>

4. Exemple de code complet

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    die("Échec de la connexion: " . $mysqli->connect_error);
}

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page_size = 10;
$offset = ($page - 1) * $page_size;

$sql = "SELECT id, name, email FROM users ORDER BY id DESC LIMIT ?, ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ii", $offset, $page_size);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo "<p>{$row['id']} - {$row['name']} - {$row['email']}</p>";
}

$stmt->close();
$mysqli->close();
?>

5. Résumé

La clé de la mise en œuvre de la requête de pagination à l'aide de mysqli_stmt :: préparer est de construire raisonnablement SQL et de comprendre les limites de la liaison des paramètres. Bien que le paramètre limite ne puisse pas utiliser les espaces réservés nommés, nous pouvons toujours utiliser Bind_param pour lier les paramètres de type numérique pour obtenir des fonctions de pagination sûres et fiables. Dans les projets réels, cette méthode est plus sûre et plus facile à maintenir que l'épissage traditionnel de cordes. Combiné avec la logique de navigation de page, vous pouvez créer un système complet d'affichage de données pour améliorer l'expérience utilisateur et les performances du système.