Heim > Backend-Entwicklung > PHP-Tutorial > Wie erstelle ich eine dynamische LIKE-Bedingungs-SELECT-Abfrage in MySQLi mithilfe vorbereiteter Anweisungen?

Wie erstelle ich eine dynamische LIKE-Bedingungs-SELECT-Abfrage in MySQLi mithilfe vorbereiteter Anweisungen?

Barbara Streisand
Freigeben: 2024-12-06 10:48:11
Original
516 Leute haben es durchsucht

How to Build a Dynamic LIKE Condition SELECT Query in MySQLi Using Prepared Statements?

Erstellen einer SELECT-Abfrage mit dynamischen LIKE-Bedingungen als von MySQLi vorbereitete Anweisung

Problem

Benutzer können eine variable Anzahl von Suchbegriffen eingeben und a Die entsprechende Abfrage muss dynamisch basierend auf diesen Begriffen erstellt werden. Das Ziel besteht darin, eine vorbereitete Anweisung zu erstellen, die diese dynamische Eingabe berücksichtigt.

Lösung

Erstellen des Abfrageausdrucks:

Verpacken Sie jeden Suchbegriff in einen LIKE-Bedingung mit Platzhaltern für Bindungswerte (%?).

Beispiel:

$construct .= "name LIKE %?%";
Nach dem Login kopieren

Bindungsparameter:

Packen Sie die Datentypen und Eingabewerte in ein Array mit dem Splat-Operator (...).

Beispiel:

$parameters = ['sss', '%Bill%', '%N_d%', '%Dave%'];
Nach dem Login kopieren

Vorbereitung und Ausführung der Erklärung:

Bereiten Sie die Erklärung vor mit der dynamischen WHERE-Klausel und binden Sie die Parameter.

$stmt = $mysqli->prepare('SELECT * FROM info WHERE ' . implode(' OR ', $conditions));
$stmt->bind_param(...$parameters);
$stmt->execute();
Nach dem Login kopieren

Abrufen Ergebnisse:

Führen Sie die Abfrage aus und rufen Sie die Ergebnisse nach Bedarf ab.

$result = $stmt->get_result();
foreach ($result as $row) {
    echo '<div>' . $row['name'] . '</div>\n'; 
}
Nach dem Login kopieren

Beispiel für korrigierten Code:

<?php
$string = "my name";
$search_exploded = explode(" ", $string);
$num = count($search_exploded);

$conditions = [];
$parameters = [''];
foreach (array_unique($search_exploded) as $value) {
    $conditions[] = "name LIKE ?";
    $parameters[0] .= 's';
    $parameters[] = "%{$value}%";
}

$query = "SELECT * FROM info";
if ($conditions) {
    $stmt = $mysqli->prepare($query . ' WHERE ' . implode(' OR ', $conditions));
    $stmt->bind_param(...$parameters);
    $stmt->execute();
    $result = $stmt->get_result();
} else {
    $result = $conn->query($query);
}
foreach ($result as $row) {
    echo '<div>' . $row['name'] . '</div>\n'; 
}

?>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie erstelle ich eine dynamische LIKE-Bedingungs-SELECT-Abfrage in MySQLi mithilfe vorbereiteter Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage