Heim >Backend-Entwicklung >PHP-Tutorial >Wie kann man ein String-Array effizient an die IN-Klausel einer von MySQLi vorbereiteten Anweisung binden?
Binden eines Arrays von Strings in von MySQLi vorbereiteten Anweisungen für eine IN-Klausel
Im Bereich der Datenbankinteraktionen kann es Situationen geben, in denen Sie erfordern die Bindung eines Arrays von Zeichenfolgenwerten an die WHERE IN (?)-Klausel innerhalb einer MySQLi-vorbereiteten Anweisung. Dieser Artikel befasst sich mit den zugrunde liegenden Prinzipien und bietet elegante Lösungen, wobei der Schwerpunkt insbesondere auf den PHP-Versionen 8.2, 8.1 und früheren Versionen liegt.
PHP 8.2: Ein vereinfachter Ansatz
Die Die in PHP 8.2 eingeführte Funktionexecute_query() rationalisiert den Prozess der Ausführung vorbereiteter Anweisungen mit datengefüllten Arrays. Zum Beispiel:
$sql = "SELECT name FROM table WHERE city IN (?,?)"; $array = ["Nashville", "Knoxville"]; $result = $mysqli->execute_query($sql, $array);
Für Fälle mit dynamischer Platzhalterzählung können Sie str_repeat() verwenden, um die Platzhalter dynamisch zu erstellen:
$array = ["Nashville", "Knoxville"]; $parameters = str_repeat("?,", count($array) - 1) . "?"; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array);
PHP 8.1: Direct Array Execution
In PHP 8.1 und höher können Sie eine vorbereitete Anweisung direkt mit einem Array ausführen und dabei das entfernen Notwendigkeit einer expliziten Bindung:
$sql = "SELECT name FROM table WHERE city IN (?,?)"; $stmt = $mysqli->prepare($sql); $stmt->execute(["Nashville", "Knoxville"]); $result = $stmt->get_result();
Frühere Versionen: Umfassen der Komplexität
Für Versionen vor PHP 8.1 ist das Verfahren etwas komplizierter:
Beispiel:
$array = ["Nashville", "Knoxville"]; $in = str_repeat("?,", count($array) - 1) . "?"; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); $types = str_repeat("s", count($array)); $stmt->bind_param($types, ...$array); $stmt->execute(); $result = $stmt->get_result();
Dieser Code ist zwar etwas ausführlicher, bietet aber eine prägnante Lösung im Vergleich zu alternativen Ansätzen.
Abschließend: Binden eines Arrays von Zeichenfolgen an eine IN-Klausel in MySQLi-vorbereiteten Anweisungen umfasst mehrere Methoden, die auf verschiedene PHP-Versionen zugeschnitten sind. Durch die Nutzung der in diesem Artikel beschriebenen Techniken können Sie diese Abfragen effektiv in Ihren Datenbankinteraktionen ausführen.
Das obige ist der detaillierte Inhalt vonWie kann man ein String-Array effizient an die IN-Klausel einer von MySQLi vorbereiteten Anweisung binden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!