Aktueller Standort: Startseite> Neueste Artikel> Verwenden Sie MySQLI_STMT :: Bereiten Sie sich auf die Implementierung von Paginierungsabfragen vor

Verwenden Sie MySQLI_STMT :: Bereiten Sie sich auf die Implementierung von Paginierungsabfragen vor

gitbox 2025-05-28

Bei der Entwicklung von PHP -Anwendungen basierend auf MySQL, um die Abfrageeffizienz und die Benutzererfahrung der Datenpräsentation zu verbessern, verwenden wir normalerweise Paging -Abfragen, um Daten in Segmenten zu laden. Im Vergleich zur Verwendung der direkten Vermittlung direkter Spleiße kann die Verwendung der Funktion mySQLi_stmt :: die SQL -Injektion nicht effektiv verhindern, sondern auch die Lesbarkeit und Wartung des Codes verbessern. In diesem Artikel werden Sie dazu gebracht, mehr darüber zu erfahren, wie Sie Pagination -Abfragen über MySQLI_stmt :: vorbereiten und mit Beispielen analysieren können.

1. Grundkonzepte

Der Kern der Paginierungsabfrage liegt in der Grenzklausel von SQL, deren Syntax lautet:

 SELECT * FROM table_name LIMIT offset, page_size;

In:

  • Offset : Offset und angeben, aus welchem ​​Datensatz zu lesen sind.

  • Page_Size : Die Anzahl der pro Seite angezeigten Datensätze.

Bei Verwendung der Funktion mySQLI_STMT :: Vorbereitung , da die Parameter der Grenzklausel Variablen nicht direkt binden können, müssen wir einige Tricks verwenden, um diese Einschränkung zu umgehen.

2. Vorbereitung

  1. Stellen Sie sicher, dass Sie die MySQLI -Erweiterung verwenden und Vorverarbeitungsanweisungen aktiviert sind.

  2. Die Datenbankverbindung wurde hergestellt.

  3. Es gibt eine Datentabelle für Abfragen, wie beispielsweise Benutzer .

3.. Implementierungsschritte der Paginierungsabfrage

Schritt 1: Stellen Sie eine Datenbankverbindung her

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}
?>

Schritt 2: Stellen Sie die Paging -Parameter ein

 <?php
$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page_size = 10;
$offset = ($page - 1) * $page_size;
?>

Schritt 3: Vorverarbeitungsanweisungen schreiben

Da Variablen in der Grenzklausel nicht durch bind_param gebunden werden können, können wir SQL nur durch String -Stiche konstruieren. Sie können sich jedoch weiterhin vorbereiten , um andere bedingte Parameter zu binden:

 <?php
$sql = "SELECT id, name, email FROM users ORDER BY id DESC LIMIT ?, ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ii", $offset, $page_size);
$stmt->execute();
$result = $stmt->get_result();
?>

Schritt 4: Ausgabe von Abfragenergebnissen

 <?php
while ($row = $result->fetch_assoc()) {
    echo "<p>{$row['id']} - {$row['name']} - {$row['email']}</p>";
}
?>

Schritt 5: Pagination Navigation Links

Unter der Annahme, dass die Gesamtzahl der Datensätze die variable $ Total_rows ist, können Sie auf folgende Weise einen Paging -Link erstellen:

 <?php
$total_rows = 100; // Normalerweise müssen Sie separat abfragen, um die Gesamtzahl zu erhalten
$total_pages = ceil($total_rows / $page_size);

for ($i = 1; $i <= $total_pages; $i++) {
    echo "<a href='https://gitbox.net/userlist.php?page=$i'>1. $i Seite</a> ";
}
?>

4. Komplette Beispielcode

 <?php
$mysqli = new mysqli("localhost", "username", "password", "database");
if ($mysqli->connect_error) {
    die("Verbindung ist fehlgeschlagen: " . $mysqli->connect_error);
}

$page = isset($_GET['page']) ? (int)$_GET['page'] : 1;
$page_size = 10;
$offset = ($page - 1) * $page_size;

$sql = "SELECT id, name, email FROM users ORDER BY id DESC LIMIT ?, ?";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("ii", $offset, $page_size);
$stmt->execute();
$result = $stmt->get_result();

while ($row = $result->fetch_assoc()) {
    echo "<p>{$row['id']} - {$row['name']} - {$row['email']}</p>";
}

$stmt->close();
$mysqli->close();
?>

5. Zusammenfassung

Der Schlüssel zur Implementierung von Paginationsabfragen mithilfe von MySQLI_STMT :: Preparation besteht darin, SQL vernünftig zu konstruieren und die Grenzen der Parameterbindung zu verstehen. Obwohl der Grenzparameter nicht benannte Platzhalter verwenden kann, können wir immer noch Bind_param verwenden, um numerische Typparameter zu binden, um sichere und zuverlässige Paging -Funktionen zu erwerben. In den tatsächlichen Projekten ist diese Methode sicherer und leichter zu pflegen als herkömmliches String -Spleißen. In Kombination mit der Seitennavigationslogik können Sie ein komplettes Paging -Datenanzeigensystem erstellen, um die Benutzererfahrung und -leistung des Systems zu verbessern.