Position actuelle: Accueil> Derniers articles> Comment implémenter la fonction de requête de pagination à l'aide de la fonction mysqli :: stmt_init?

Comment implémenter la fonction de requête de pagination à l'aide de la fonction mysqli :: stmt_init?

M66 2025-05-18

Dans PHP, l'extension MySQLI est un outil puissant pour interagir avec une base de données MySQL. Lorsque nous traitons de grandes quantités de données, les requêtes de pagination sont une technique très courante et efficace pour éviter de charger toutes les données à la fois. Aujourd'hui, nous explorerons comment utiliser la fonction MySQLI :: STMT_INIT pour implémenter la fonction de requête de pagination.

1. Qu'est-ce que la requête de pagination?

La requête de pagination fait référence à l'affichage des données par lots en fonction d'un certain nombre de données et à l'affichage d'une partie des données sur chaque page, plutôt que de charger toutes les données à la fois. Grâce à la pagination, nous pouvons non seulement améliorer l'efficacité du traitement des données, mais également optimiser l'effet d'affichage frontal et améliorer l'expérience utilisateur.

2. Le rôle de mysqli :: stmt_init

La fonction MySQLI :: STMT_INIT est utilisée pour initialiser un nouvel objet MySQLI_STMT , puis les instructions de prétraitement peuvent être exécutées via l'objet. Les déclarations de prétraitement peuvent améliorer l'efficacité de la requête tout en évitant le risque d'injection SQL.

3. Comment implémenter la requête de pagination à l'aide de mysqli :: stmt_init ?

Supposons que nous ayons un tableau d'utilisateurs qui contient une grande quantité d'informations utilisateur et que nous voulons paginer les données de ces utilisateurs. Tout d'abord, nous devons calculer le nombre total de données, puis calculer le décalage de la requête en fonction du numéro de page et du nombre de pièces affichées par page. Voici les étapes pour implémenter la requête de pagination.

4. Exemple de code

 <?php
// Configuration de la connexion de la base de données
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "test_db";

// Créer une connexion
$conn = new mysqli($servername, $username, $password, $dbname);

// Vérifiez la connexion
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

// Nombre d&#39;entrées affichées par page
$records_per_page = 10;

// 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;
$start_from = ($page - 1) * $records_per_page;

// Obtenez le nombre total de données
$sql_count = "SELECT COUNT(*) AS total_records FROM users";
$result_count = $conn->query($sql_count);
$row = $result_count->fetch_assoc();
$total_records = $row['total_records'];

// Calculez le nombre total de pages
$total_pages = ceil($total_records / $records_per_page);

// utiliser stmt_init Instruction de prétraitement d&#39;initialisation de la fonction
$stmt = $conn->stmt_init();
if ($stmt->prepare("SELECT * FROM users LIMIT ?, ?")) {
    // Lier les paramètres
    $stmt->bind_param("ii", $start_from, $records_per_page);
    
    // Exécuter une requête
    $stmt->execute();
    
    // Obtenir des résultats
    $result = $stmt->get_result();
    
    // Données de sortie
    while ($row = $result->fetch_assoc()) {
        echo "ID: " . $row['id'] . " - Name: " . $row['name'] . "<br>";
    }
    
    // Libérez l&#39;ensemble de résultats
    $stmt->free_result();
    
    // Fermez la déclaration de prétraitement
    $stmt->close();
}

// Fermez la connexion de la base de données
$conn->close();
?>

<!-- Afficher les liens de pagination -->
<div>
    <p>Page: 
        <?php
        // Navigation de pagination
        for ($i = 1; $i <= $total_pages; $i++) {
            echo "<a href='m66.net?page=$i'>$i</a> ";
        }
        ?>
    </p>
</div>

5. Expliquez le code

  • Connexion de la base de données: utilisez un nouveau mysqli () pour créer une connexion à la base de données. Si la connexion échoue, le code affiche un message d'erreur et termine l'exécution.

  • Calculez le décalage de la pagination: le nombre d'enregistrements affiché sur chaque page est RECORDS_PER_PAGE et calculez quel enregistrement pour démarrer la requête en fonction de la page de page actuelle $ . $ start_from = ($ page - 1) * $ enregistrets_per_page calcule le décalage.

  • Obtenez le nombre total d'enregistrements: nous exécutons une requête pour obtenir le nombre total d'enregistrements dans le tableau des utilisateurs , calculant ainsi le nombre total de pages.

  • Exécutez la requête de pagination: utilisez stmt_init () pour initialiser une instruction de prétraitement, rédiger une requête via la méthode Pread () , Bind_param () pour lier les paramètres de requête, puis exécuter la requête et obtenir le résultat.

  • Afficher la navigation de pagination: via une boucle, générez des liens de pagination. En cliquant sur chaque numéro de page, il va passer à la page correspondante et l'afficher dans le format m66.net?Page=$i .

6. Résumé

L'utilisation de la fonction MySQLI :: STMT_INIT pour la requête de pagination peut non seulement améliorer l'efficacité de la requête de données, mais également empêcher efficacement l'injection de SQL. Dans le développement réel, les requêtes de pagination sont souvent utilisées dans des scénarios où de grandes quantités de données sont nécessaires. Grâce à la conception raisonnable de pagination, les performances du système et l'expérience utilisateur peuvent être considérablement améliorées.

J'espère que cet article peut vous aider à comprendre comment utiliser la fonction mysqli :: stmt_init pour implémenter la fonction de requête de pagination. Si vous avez des questions ou avez besoin d'une discussion plus approfondie, veuillez laisser un message pour discuter!