WebImpressionen
Limit

Select-Anweisung mit LIMIT begrenzen

Die LIMIT-Klausel wird verwendet, um die Anzahl der von der SELECT-Anweisung zurückgegebenen Zeilen zu beschränken.
Diese Funktion ist sehr hilfreich, um die Ladezeit der Seite zu optimieren und die Lesbarkeit einer Webseite zu verbessern.
Beispielsweise kann eine große Anzahl von Datensätzen mithilfe der Paginierung auf mehrere Seiten aufteilt werden, wobei auf jeder Seite aus der Datenbank eine begrenzte Anzahl von Datensätzen geladen wird, wenn ein Benutzer diese Seite durch Klicken auf den Paginierungslink anfordert.

Die grundlegende Syntax der LIMIT-Klausel kann wie folgt angegeben werden:

SELECT spalten_name(n) FROM tabellen_name LIMIT row_offset, row_count;

Die LIMIT-Klausel akzeptiert einen oder zwei Parameter, die eine nicht negative Ganzzahl sein müssen:

Wenn zwei Parameter angegeben werden, gibt der erste Parameter den Versatz der ersten zurückzugebenden Zeile an,
d. H. Den Startpunkt, während der zweite Parameter die Anzahl der zurückzugebenden Zeilen angibt.
Der Offset der ersten Zeile ist 0 (nicht 1).
Wenn nur ein Parameter angegeben wird, gibt er die maximale Anzahl der Zeilen an,
die ab dem Beginn der Ergebnismenge zurückgegeben werden sollen.

Um beispielsweise die ersten drei Zeilen abzurufen, kann die folgende Abfrage verwendet werden:

SELECT * FROM personen LIMIT 3;

Mit der folgenden Abfrage können die Zeilen 2-4 (einschließlich) einer Ergebnismenge abgerufen werden:

SELECT * FROM personen LIMIT 1, 3;

Erstellen einer SQL-Abfrage mit der LIMIT-Klausel in der SELECT-Anweisung.
Abfrage ausführen, indem sie an die php-Funktion "mysqli-query" übergeben wird, um die gefilterten Daten abzurufen.

Betrachten wir folgende Tabelle "personen" in der Demo-Datenbank:

    0    spalte1   spalte2         spalte3
 +----+----------+---------+--------------------+
 | id | vor_name | name    | mail               |
 +----+----------+---------+--------------------+
 |  1 | Peter    | Maier   | petermaier@mail.de |
 |  2 | Udo      | Schmidt | udoschmidt@mail.de |
 |  3 | Frank    | Meier   | frankmeier@mail.de |
 |  4 | Peter    | Mayer   | petermayer@mail.de |
 |  5 | Hans     | Schmid  | hansschmid@mail.de |
 +----+----------+---------+--------------------+

Der php-Code im folgenden Beispiel zeigt nur drei Zeilen aus der Tabelle "personen" an.

 
<?php
// Verbindung zur Datenbank einfügen
1
$sql = " SELECT * FROM personen LIMIT 3 ";
2
if ( $result = mysqli_query ( $link, $sql )) {
3
if ( mysqli_num_rows ( $result ) > 0 ) {
4
echo "<table>";
5
echo "<tr>";
6
echo "<th>Id</th>";
7
echo "<th>Vorname</th>";
8
echo "<th>Name</th>";
9
echo "<th>eMail</th>";
10
echo "</tr>";
11
while ( $row = mysqli_fetch_array ( $result )) {
12
echo "<tr>";
13
echo "<td>" . $row [ 'id' ] . "</td>";
14
echo "<td>" . $row [ 'vor_name' ] . "</td>";
15
echo "<td>" . $row [ 'name' ] . "</td>";
16
echo "<td>" . $row [ 'mail' ] . "</td>";
17
echo "</tr>";
18
}
19
echo "</table>";
20
mysqli_free_result ( $result );
21
} else {
22
echo " Es wurden keine Datensätze gefunden. ";
23
}
24
} else {
25
echo " FEHLER: " . $sql . " konnte nicht ausgeführt werden. " . mysqli_error ( $link );
26
}
27
mysqli_close ( $link ) ;
 
?>
 
<?php
// Verbindung zur Datenbank einfügen
1
$sql = " SELECT * FROM personen LIMIT 3 ";
2
if ( $result = mysqli -> query ( $sql )) {
3
if ( $result -> num_rows > 0 ) {
4
echo "<table>";
5
echo "<tr>";
6
echo "<th>Id</th>";
7
echo "<th>Vorname</th>";
8
echo "<th>Name</th>";
9
echo "<th>eMail</th>";
10
echo "</tr>";
11
while ( $row = $result -> fetch_array () ) {
12
echo "<tr>";
13
echo "<td>" . $row [ 'id' ] . "</td>";
14
echo "<td>" . $row [ 'vor_name' ] . "</td>";
15
echo "<td>" . $row [ 'name' ] . "</td>";
16
echo "<td>" . $row [ 'mail' ] . "</td>";
17
echo "</tr>";
18
}
19
echo "</table>";
20
$result -> free ();
21
} else {
22
echo " Es wurden keine Datensätze gefunden. ";
23
}
24
} else {
25
echo " FEHLER: " . $sql . " konnte nicht ausgeführt werden. " . $mysqli -> error ;
26
}
27
$mysqli -> close () ;
 
?>

Nach dem Begrenzen sieht die Ausgabe etwa so aus:

IDVornameNameeMail
1PeterMaierpetermaier@mail.de
2UdoSchmidtudoschmidt@mail.de
3FrankMeierfrankmeier@mail.de