sql >> Database teknologi >  >> RDS >> Mysql

Lav flere sider ud af en mysql-forespørgsel

Som du har gættet, skal du bruge LIMIT søgeord .

Den accepterer to værdier (citering) :

  • forskydningen af ​​den første række, der skal returneres
  • det maksimale antal rækker, der skal returneres


I dit tilfælde bliver du nødt til at bruge noget som dette til den første side :

select * from your_table order by ... limit 0, 50

Og så til den anden side :

select * from your_table order by ... limit 50, 50

Og for den tredje :

select * from your_table order by ... limit 100, 50

Og så videre;-)


Rediger efter kommentaren: for at få sidenummeret, skal du modtage det fra dine URL'er, der ville se sådan ud :

http://www.example.com/page.php?pagenum=2

Derefter vil du beregne den første værdi for grænsen, :

$offset = 50 * intval($_GET['pagenum']);

Og injicer det i din forespørgsel :

select * from your_table order by ... limit $offset, 50


At konstruere URL'er til de forskellige sider er nu et spørgsmål om at få URL'er som disse:

http://www.example.com/page.php?pagenum=0
http://www.example.com/page.php?pagenum=1
http://www.example.com/page.php?pagenum=2
...

Hvis du ved, at du har 700 elementer og 50 pr. side, har du 700/50 sider;-)
Så noget som dette burde gøre tricket :

for ($i=0 ; $i<700/50 ; i++) {
    // Use http://www.example.com/page.php?pagenum=$i as URL
}


Selvfølgelig er 700 en værdi, der sandsynligvis kan ændre sig, og den bør ikke være hårdkodet:den skal bestemmes ud fra databasen ved hjælp af en count forespørgsel :

select count(*) as total
from your_table
...


  1. Indsæt det lavest mulige unikke positive heltal på en atomart måde i MySql

  2. MaxScale Basic Management ved hjælp af MaxCtrl til MariaDB Cluster - Anden del

  3. Hvordan får man udførelsestiden for en MySQL-forespørgsel fra PHP?

  4. Hvorfor springer mysql nogle auto-increment-id'er over?