Heim >Backend-Entwicklung >PHP-Tutorial >Wie binde ich ein Array von Strings an eine MySQLi WHERE IN (?)-Klausel?
Ein Array von Strings in einer WHERE IN (?)-Klausel mit MySQLi binden
Bei der Arbeit mit MySQLi-vorbereiteten Anweisungen ist es wichtig zu verstehen wie man ein Array von Werten an eine WHERE IN (?)-Klausel bindet. Dieser Artikel bietet einen umfassenden Leitfaden zur effektiven Lösung dieses Problems.
Die Herausforderung
Das Ziel besteht darin, eine Reihe von Städtenamen dynamisch an eine WHERE IN-Klausel in einem zu binden MySQLi vorbereitete Anweisung. Der bereitgestellte Code schlägt jedoch zunächst aufgrund einer falschen Bindung des Arrays fehl.
Binden eines String-Arrays
Es gibt mehrere Ansätze zum Binden eines String-Arrays. Lassen Sie uns die verfügbaren Methoden erkunden:
1. Funktion „execute_query()“ (PHP 8.2)
Die einfachste Lösung ist in PHP 8.2 mit der Einführung der Funktion „execute_query()“ verfügbar. Mit dieser Methode können Sie sowohl die SQL-Anweisung als auch ein zu bindendes Wertearray auf einmal übergeben.
$array = ['Nashville', 'Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array);
2. Array in „execute()“ (PHP 8.1)
In PHP 8.1 können Sie ein Array direkt an die Methode „execute()“ übergeben, ohne dass Platzhalter oder Bindungen erforderlich sind.
$stmt = $mysqli->prepare($sql); $stmt->execute($array);
3. Für ältere Versionen vorbereiten/binden/ausführen
Für Versionen vor PHP 8.1 sind die folgenden Schritte erforderlich:
$types = str_repeat('s', count($array)); $stmt->bind_param($types, ...$array);
Beispiel:
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); $stmt->bind_param(str_repeat('s', count($array)), ...$array); $stmt->execute(); $result = $stmt->get_result();
Durch Befolgen dieser Ansätze können Sie ein Array von Zeichenfolgen effektiv an ein WHERE IN (? )-Klausel in vorbereiteten MySQLi-Anweisungen.
Das obige ist der detaillierte Inhalt vonWie binde ich ein Array von Strings an eine MySQLi WHERE IN (?)-Klausel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!