Maison > développement back-end > Problème PHP > Comment écrire des instructions SQL pour les requêtes de pagination à l'aide de PHP

Comment écrire des instructions SQL pour les requêtes de pagination à l'aide de PHP

PHPz
Libérer: 2023-04-03 18:36:01
original
932 Les gens l'ont consulté

Avec la popularité des applications Web, de nombreux sites Web nécessitent une fonction de requête de pagination. PHP est un langage de développement Web très populaire et ses fonctions intégrées d'accès aux bases de données sont également très puissantes. Cet article explique comment utiliser PHP pour écrire des instructions SQL pour les requêtes de pagination.

1. Qu'est-ce qu'une requête de pagination ?

La requête de pagination fait référence à l'affichage d'un résultat de requête dans des pages et n'affiche qu'un nombre fixe d'enregistrements sur chaque page. De manière générale, la requête de pagination nécessite les paramètres suivants :

  • Le nombre d'enregistrements affichés sur chaque page
  • Le numéro de page à afficher
  • Nombre total d'enregistrements

Grâce à ces paramètres, nous pouvons calculer le nombre d'enregistrements qui doit être affiché sur la page actuelle La position de départ et la position de fin, et construire l'instruction SQL correspondante.

2. Exemple de requête de pagination PHP

Supposons qu'il existe une table nommée "étudiants" avec la structure suivante :

CREATE TABLE students (
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT NOT NULL,
  gender ENUM('male', 'female') NOT NULL,
  score INT NOT NULL
);
Copier après la connexion

Maintenant, nous devons interroger les informations de toutes les filles et le faire sous la forme de 10 enregistrements par page. en pages. Ce qui suit est un exemple simple de requête de pagination PHP :

<?php
// 连接数据库
$conn = mysqli_connect(&#39;localhost&#39;, &#39;username&#39;, &#39;password&#39;, &#39;database&#39;);
if (!$conn) {
  die(&#39;数据库连接失败:&#39; . mysqli_error());
}

// 计算总记录数
$sql = "SELECT COUNT(*) FROM students WHERE gender=&#39;female&#39;";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($result);
$total = $row[0];

// 计算起始位置
$pagesize = 10;
$page = isset($_GET[&#39;page&#39;]) ? $_GET[&#39;page&#39;] : 1;
$start = ($page - 1) * $pagesize;

// 构造SQL语句
$sql = "SELECT * FROM students WHERE gender=&#39;female&#39; LIMIT $start, $pagesize";
$result = mysqli_query($conn, $sql);
?>
<html>
<head>
<title>分页查询示例</title>
</head>
<body>
<h1>分页查询示例</h1>
<table>
<tr>
  <th>ID</th>
  <th>姓名</th>
  <th>年龄</th>
  <th>性别</th>
  <th>成绩</th>
</tr>
<?php while ($row = mysqli_fetch_array($result)): ?>
<tr>
  <td><?php echo $row[&#39;id&#39;]; ?></td>
  <td><?php echo $row[&#39;name&#39;]; ?></td>
  <td><?php echo $row[&#39;age&#39;]; ?></td>
  <td><?php echo $row[&#39;gender&#39;]; ?></td>
  <td><?php echo $row[&#39;score&#39;]; ?></td>
</tr>
<?php endwhile; ?>
</table>
<p>
<?php
// 输出分页链接
$pages = ceil($total / $pagesize);
for ($i = 1; $i <= $pages; $i++) {
  if ($i == $page) {
    echo "<strong>$i</strong> ";
  } else {
    echo "<a href=&#39;?page=$i&#39;>$i</a> ";
  }
}
?>
</p>
</body>
</html>
Copier après la connexion

Le code ci-dessus générera une page HTML pour la requête de pagination. Tout d'abord, utilisez la fonction « mysqli_query » pour interroger le nombre total d'enregistrements qui remplissent les conditions, puis utilisez la fonction « ceil » pour calculer le nombre total de pages. L'extrait de code suivant montre comment générer des liens de pagination, où la variable « $page » représente le numéro de page actuel.

$pages = ceil($total / $pagesize);
for ($i = 1; $i <= $pages; $i++) {
  if ($i == $page) {
    echo "<strong>$i</strong> ";
  } else {
    echo "<a href=&#39;?page=$i&#39;>$i</a> ";
  }
}
Copier après la connexion

3. Méthode de construction de l'instruction SQL

Dans l'exemple ci-dessus, nous utilisons la clause LIMIT pour limiter la plage des résultats renvoyés. Son utilisation est :

SELECT * FROM table_name LIMIT start, size
Copier après la connexion

où "start" représente la position de départ des résultats renvoyés. , et "size" Représente la taille du résultat renvoyé. Dans des circonstances normales, nous devons calculer la position de départ appropriée et la taille des résultats renvoyés pour implémenter les requêtes de pagination. La formule de calcul est :

$start = ($page - 1) * $pagesize;
$size = $pagesize;
Copier après la connexion

Une autre façon de l'écrire est d'utiliser la clause OFFSET. Son utilisation est :

SELECT * FROM table_name LIMIT size OFFSET start
Copier après la connexion
.

où "OFFSET start" représente la position de départ du résultat renvoyé, et "LIMIT size" représente la taille du résultat renvoyé. Par rapport à l'utilisation de la clause LIMIT, il n'y a aucune différence fonctionnelle entre l'utilisation de la clause OFFSET. Cependant, certaines implémentations de bases de données peuvent avoir des directions d'optimisation des performances différentes pour les deux méthodes d'écriture. La situation spécifique nécessite une sélection flexible en fonction de la situation réelle.

4. Résumé

Cet article explique comment écrire des instructions SQL pour les requêtes de pagination en PHP et fournit un exemple simple. Dans le développement réel, il est nécessaire de choisir une méthode de construction d'instructions SQL appropriée en fonction de la situation réelle et de gérer les éventuelles exceptions dans les requêtes de pagination pour améliorer la disponibilité et la stabilité des applications Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal