Hauptmenü

Untermenü

PHP/MySQL - Praxistutorial 5 - LIMIT

1. Die Abschnitte

2. LIMIT

Mit diesem Bestandteil des SQL-Befehls SELECT werden wir unsere ganze Anwendung steuern. Damit ihr zu Beginn ein Verständnis für die Arbeitsweise bekommt, arbeiten wir erst mal nur mit dem MySQL-Frontend eurer Wahl, also zum Beispiel PHPMyAdmin, HeidiSQL oder der Konsole. Letzteres ist aber nur was für die ganz Hartgesottenen.

3. Abfrage erster Teil

Um möglichst viele Treffer zu bekommen, arbeiten wir mit einer sehr ungenauen Abfrage mittels LIKE. Also gebt mal folgendes in euer MySQL-Frontend ein:


SELECT 
  headline 
FROM 
  suche 
WHERE 
  headline like '%php%';

Erläuterung

Mit LIKE sollte man immer dann arbeiten, wenn man keine genaue Übereinstimmung, sondern nur eine "Ähnlichkeit" suchen will, ohne auf die berüchtigten regulären Ausdrücke zurückgreifen zu müssen. Dazu benutzt man Wildcards, vulgo Platzhalter, in diesem Fall also das Prozentzeichen. Dabei bestimmt die Position die Möglichkeiten:

  • 'php%' bedeutet, dass alles gefunden wird, das mit php beginnt
  • '%php' bedeutet, dass alles gefunden wird, das mit php endet
  • '%php%' bedeutet, dass alles gefunden wird, wo php drinsteht
  • 'php' ist tinnef, dafür gibt es WHERE headline = 'php' (*)

(*) Eine Anmerkung dazu

Man kann auch sinnvoll mit einem like 'irgendwas' arbeiten, wenn man innerhalb der Zeichenkette mit einem Unterstrich arbeitet. Der ist dann auch ein Platzhalter. So findet like 'O_P' zum Beispiel sowohl ein OOP als auch ein OAP. Letzteres ist übrigens ein Old Age Pensioner. Aber ohne weiteren Platzhalter ist und bleibt es Humbug.

So, bisher haben wir 168 Treffer. Als ich das Tutorial schrieb, waren es nur 48. * Seufz und nostalgisch werd*. Auf jeden Fall ist das entschieden zuviel. Also schränken wir das mal scheibchenweise ein.

4. Abfrage zweiter Teil


SELECT 
  headline 
FROM 
  suche 
WHERE 
  headline LIKE '%php%' LIMIT 010;


SELECT 
  headline 
FROM 
  suche 
WHERE 
  headline LIKE '%php%' LIMIT 1010;


SELECT 
  headline 
FROM 
  suche 
WHERE 
  headline LIKE '%php%' LIMIT 2010;


SELECT ... uswbis der Arzt kommt

Erläuterung

Probiert die Abfragen mal aus. Dann werdet ihr ganz schnell erkennen, was sie bewirken, nämlich die fortlaufende Ausgabe von jeweils 10 Datensätzen. Der erste Wert bezeichnet die Position des "Startdatensatzes", der zweite die Anzahl der auszugebenden Treffer.

Man kann das auch noch mit einer Sortierfunktion kombinieren, wie zum Beispiel:


SELECT 
  FROM 
  suche 
WHERE 
  headline LIKE '%php%'
ORDER BY 
  headline 
LIMIT 10,10;

In diesem Fall werden also die Ausgaben alphabetisch sortiert. Das heißt aber nicht, dass die Überschriften zu Anfang kommen, die mit php beginnen. Denn die Sortierung orientiert sich am ersten(!) Buchstaben der Ausgabe.

5. Folgerung

Für unsere Blätterfunktion benötigen wir also vier Werte.

zurück zum vorherigen Abschnitt weiter zum nächsten Abschnitt