Aktueller Standort: Startseite> Neueste Artikel> So verwenden Sie MySQLI :: STMT_INIT, um eine effiziente Keyword -Fuzzy -Suche zu implementieren (wie Abfrage)

So verwenden Sie MySQLI :: STMT_INIT, um eine effiziente Keyword -Fuzzy -Suche zu implementieren (wie Abfrage)

M66 2025-06-23

Datenbankabfragen sind eine der häufigsten Vorgänge bei der Entwicklung von PHP -Anwendungen. Insbesondere im Umgang mit großen Datenvolumina ist das Verbesserung der Abfrageeffizienz unseres Fokus. In PHP ist es sehr üblich, die MySQLI -Erweiterung zu verwenden, um Datenbankabfragen auszuführen, und MySQLI :: STMT_INIT ist ein großartiges Tool, mit dem wir Vorverarbeitungsanweisungen ausführen können, wodurch die Effizienz und Sicherheit von Abfragen verbessert wird.

In diesem Artikel wird vorgestellt, wie Sie eine effiziente Keyword -Fuzzy -Suche durch MySQLI :: STMT_INIT erzielen, insbesondere wie man mit wie Schlüsselwörtern in SQL abfragt.

1. Vorverarbeitungsanweisungen und MySQLI :: STMT_INIT

In PHP stellt MySQLI die MySQLI :: STMT_INIT -Methode zur Initialisierung einer Vorverarbeitungsanweisung bereit. Dies bedeutet, dass SQL -Abfragen durch Bindungsparameter vorkompiliert und dann ausgeführt werden, wodurch das Risiko einer SQL -Injektion vermieden wird. Die Vorverarbeitungsanweisungen bieten nicht nur Sicherheit, sondern auch eine bessere Leistung bei der Ausführung derselben Abfrage.

Grammatik

 $stmt = $mysqli->stmt_init();

2. Warum verwenden Sie wie für Fuzzy -Abfragen?

Wie bei SQL werden häufig Schlüsselwörter verwendet, um Fuzzy -Abfragen zu implementieren. Es wird normalerweise verwendet, um Saiten zu finden, die bestimmte Muster entsprechen. In einer Fuzzy -Abfrage repräsentiert % jedes Zeichen (einschließlich Nullzeichen) und _ jedes einzelne Zeichen.

Zum Beispiel:

 SELECT * FROM users WHERE username LIKE '%admin%';

Diese Abfrage gibt alle Datensätze in Benutzername zurück, die Admin enthalten.

3. Verwenden Sie MySQLI :: STMT_INIT und implementieren Sie eine effiziente Fuzzy -Suche

Als nächstes zeigen wir, wie Sie MySQLI :: STMT_INIT verwenden, um eine effiziente Keyword -Fuzzy -Suche zu implementieren. Angenommen, wir müssen Benutzer aus der Datenbank nachschlagen, und die Suchkriterien lautet, dass der Benutzername ein bestimmtes Schlüsselwort enthält.

Schritt 1: Initialisieren Sie die Datenbankverbindung

Zunächst müssen wir eine Verbindung zur Datenbank herstellen:

 $mysqli = new mysqli("localhost", "username", "password", "database");

// Überprüfen Sie die Verbindung
if ($mysqli->connect_error) {
    die("Connection failed: " . $mysqli->connect_error);
}

Schritt 2: Initialisieren Sie die Vorverarbeitungsanweisung

Wir verwenden MySQLI :: STMT_INIT, um ein Vorverarbeitungsanweisungsobjekt zu initialisieren:

 $stmt = $mysqli->stmt_init();

Schritt 3: Erstellen Sie eine Fuzzy -Abfrageanweisung

Verwenden Sie als nächstes wie für Fuzzy -Abfragen. Wir benutzen ? Anstelle von Parametern, um SQL -Injektionsprobleme zu vermeiden:

 $sql = "SELECT * FROM users WHERE username LIKE ?";

Schritt 4: Parameter binden

Wir müssen die vom Benutzer eingegebenen Suchschlüsselwörter an den gebunden ? In der SQL -Anweisung und % der ähnlichen Abfrage % hinzufügen, um eine Fuzzy -Übereinstimmung anzuzeigen:

 $searchKeyword = "%$keyword%";  // Vom Benutzer eingegebene Schlüsselwörter,Fügen Sie vor und nach einem prozentualen Schild hinzu
$stmt->prepare($sql);
$stmt->bind_param("s", $searchKeyword);  // "s" Parameter, die die Bindung eines String -Typs darstellen

Schritt 5: Führen Sie die Abfrage aus

Führen Sie die Abfrage aus und erhalten Sie das Ergebnis:

 $stmt->execute();
$result = $stmt->get_result();

Schritt 6: Verarbeiten Sie die Ergebnisse

Holen Sie sich das Abfrageergebnis und verarbeiten Sie es über Get_Result () , z. B. geben Sie das Ergebnis in den Browser aus:

 while ($row = $result->fetch_assoc()) {
    echo "User ID: " . $row['id'] . " - Username: " . $row['username'] . "<br>";
}

Schritt 7: Schließen Sie die Verbindung

Vergessen Sie nach Abschluss der Abfrage nicht, die Datenbankverbindung zu schließen:

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

4. Zusammenfassung

Durch die Verwendung von MySQLI :: STMT_INIT- und Vorverarbeitungsanweisungen können wir die SQL -Injektion effektiv verhindern und die Abfrageleistung verbessern. Insbesondere bei der Verwendung von Fuzzy -Abfragen können Vorverarbeitungsanweisungen uns helfen, die Abfrage von den vom Benutzer eingegebenen Daten zu trennen und die Sicherheit und Effizienz zu erhöhen.

Darüber hinaus ist es erwähnenswert, dass wie Abfragen in einigen Szenarien sehr nützlich sind, Fuzzy -Abfragen jedoch bei der Bearbeitung großer Datenmengen zu Leistungsproblemen führen können. Es ist möglich, eine weitere Verbesserung der Abfrageeffizienz durch Datenbankindexierung oder andere Optimierungsmaßnahmen zu verbessern.