Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menulis pernyataan SQL untuk pertanyaan halaman menggunakan PHP

Bagaimana untuk menulis pernyataan SQL untuk pertanyaan halaman menggunakan PHP

PHPz
PHPzasal
2023-04-03 16:47:44867semak imbas

Dengan populariti aplikasi web, banyak tapak web memerlukan fungsi pertanyaan halaman. PHP ialah bahasa pembangunan web yang sangat popular, dan fungsi capaian pangkalan data terbina dalamnya juga sangat berkuasa. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menulis pernyataan SQL untuk pertanyaan halaman.

1. Apakah pertanyaan paging?

Pertanyaan paging merujuk kepada memaparkan hasil pertanyaan dalam halaman, dengan hanya bilangan rekod yang tetap dipaparkan pada setiap halaman. Secara umumnya, pertanyaan paging memerlukan parameter berikut:

  • Bilangan rekod yang dipaparkan pada setiap halaman
  • Nombor halaman untuk dipaparkan
  • Jumlah bilangan rekod

Melalui parameter ini, kita boleh mengira kedudukan permulaan dan kedudukan penamat rekod yang perlu dipaparkan pada halaman semasa, dan membina pernyataan SQL yang sepadan.

2. Contoh pertanyaan paging PHP

Andaikan terdapat jadual bernama "pelajar" dengan struktur berikut:

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
);

Sekarang kita perlu menanyakan maklumat semua perempuan , dan dipaparkan dalam halaman dengan 10 rekod setiap halaman. Berikut ialah contoh pertanyaan paging PHP yang mudah:

<?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>

Kod di atas akan mengeluarkan halaman HTML untuk pertanyaan paging. Mula-mula, gunakan fungsi "mysqli_query" untuk menanyakan jumlah bilangan rekod yang memenuhi syarat, dan kemudian gunakan fungsi "ceil" untuk mengira jumlah halaman. Coretan kod berikut menunjukkan cara untuk mengeluarkan pautan penomboran, dengan pembolehubah "$page" mewakili nombor halaman semasa.

$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> ";
  }
}

3. Cara membina pernyataan SQL

Dalam contoh di atas, kami menggunakan klausa LIMIT untuk mengehadkan julat hasil yang dikembalikan ialah:

SELECT * FROM table_name LIMIT start, size

Di mana "mula" mewakili kedudukan permulaan hasil yang dikembalikan, dan "saiz" mewakili saiz hasil yang dikembalikan. Biasanya kita perlu mengira kedudukan permulaan yang sesuai dan saiz hasil yang dikembalikan untuk melaksanakan pertanyaan paging Formula pengiraan ialah:

$start = ($page - 1) * $pagesize;
$size = $pagesize;

Cara lain untuk menulisnya ialah menggunakan klausa OFFSET dan penggunaannya. ialah:

SELECT * FROM table_name LIMIT size OFFSET start

Di mana "OFFSET mula" mewakili kedudukan permulaan hasil yang dikembalikan dan "LIMIT saiz" mewakili saiz hasil yang dikembalikan. Berbanding dengan menggunakan klausa LIMIT, tiada perbezaan fungsi antara menggunakan klausa OFFSET Walau bagaimanapun, beberapa pelaksanaan pangkalan data mungkin mempunyai arah pengoptimuman prestasi yang berbeza untuk kedua-dua kaedah penulisan.

4. Ringkasan

Artikel ini memperkenalkan cara menulis pernyataan SQL untuk pertanyaan halaman dalam PHP, dan menyediakan contoh mudah. Dalam pembangunan sebenar, adalah perlu untuk memilih kaedah pembinaan pernyataan SQL yang sesuai mengikut situasi sebenar, dan mengendalikan kemungkinan pengecualian dalam pertanyaan paging untuk meningkatkan ketersediaan dan kestabilan aplikasi Web.

Atas ialah kandungan terperinci Bagaimana untuk menulis pernyataan SQL untuk pertanyaan halaman menggunakan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn