sql >> Databasteknik >  >> RDS >> Mysql

Gör flera sidor av en mysql-fråga

Som du gissat måste du använda LIMIT sökord .

Den accepterar två värden (quoting) :

  • förskjutningen av den första raden som ska returneras
  • det maximala antalet rader att returnera


I ditt fall måste du använda något liknande detta för första sidan :

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

Och sedan till den andra sidan :

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

Och för den tredje :

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

Och så vidare;-)


Redigera efter kommentaren: för att få sidnumret måste du få det från dina webbadresser, som skulle se ut så här :

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

Sedan kommer du att beräkna det första värdet för gränsen, :

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

Och injicera det i din fråga :

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


Att konstruera webbadresser till de olika sidorna är nu en fråga om att skaffa webbadresser som dessa :

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

Om du vet att du har 700 element och 50 per sida, har du 700/50 sidor;-)
Så, något sådant här borde göra susen :

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


Naturligtvis är 700 ett värde som förmodligen kan ändras, och som inte bör hårdkodas:det bör fastställas från databasen med hjälp av en count fråga :

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


  1. Lagring av inledande nollor av heltal i MySQL-databas som INTEGER

  2. Kortsluter MySQL IF()-funktionen?

  3. MySQL POW() Funktion – Höj ett värde till kraften av ett annat värde

  4. Hur kontrollerar jag JDK-versionen i Oracle?