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.
Erstellen des Abfrageausdrucks:
Verpacken Sie jeden Suchbegriff in einen LIKE-Bedingung mit Platzhaltern für Bindungswerte (%?).
Beispiel:
$construct .= "name LIKE %?%";
Bindungsparameter:
Packen Sie die Datentypen und Eingabewerte in ein Array mit dem Splat-Operator (...).
Beispiel:
$parameters = ['sss', '%Bill%', '%N_d%', '%Dave%'];
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();
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'; }
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'; } ?>
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!