Heim >Backend-Entwicklung >PHP-Tutorial >Wie binde ich ein String-Array effizient an eine MySQL-WHERE-IN(?)-Klausel mithilfe der vorbereiteten mysqli-Anweisungen von PHP?
Binden eines Arrays von Strings an eine WHERE IN(?)-Klausel
Binden eines Arrays von Werten an die WHERE IN(?)-Klausel ist eine häufige MySQL-Aufgabe. Bei der Verwendung der vorbereiteten mysqli-Anweisungen von PHP kann es schwierig sein, dies zu erreichen, wenn Sie nicht mit den Einschränkungen und Nuancen der Funktion bind_param() vertraut sind.
Das Problem
Beim Versuch, ein Array von Werten mit bind_param() an die IN(?)-Klausel zu binden, können Probleme auftreten, die zu einem Fehlschlag führen Ausführung.
Die Lösung
Es gibt verschiedene Möglichkeiten, diese Aufgabe anzugehen, abhängig von der PHP-Version, die Sie verwenden:
PHP 8.2 und höher
PHP 8.1
Frühere PHP-Versionen
Für ältere Versionen ist ein aufwändigerer Ansatz erforderlich:
Beispielcode
Hier ist ein Beispiel, das den Ansatz früherer PHP-Versionen verwendet:
$array = ['Nashville', 'Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $stmt = $mysqli->prepare($sql); // prepare $types = str_repeat('s', count($array)); // types $stmt->bind_param($types, ...$array); // bind array at once $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
Wenn Sie diese Ansätze verstehen, Mit von MySQL vorbereiteten Anweisungen können Sie ein Array von Zeichenfolgen effizient an eine WHERE IN(?)-Klausel binden und so die erfolgreiche Ausführung Ihrer Abfragen sicherstellen.
Das obige ist der detaillierte Inhalt vonWie binde ich ein String-Array effizient an eine MySQL-WHERE-IN(?)-Klausel mithilfe der vorbereiteten mysqli-Anweisungen von PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!