Sie können auf Herausforderungen stoßen, wenn Sie versuchen, ein Array von Werten mithilfe von MySQLi an die WHERE IN-Klausel zu binden MySQLi. Ein häufiger Fehler ist die falsche Verwendung von bind_param. So lösen Sie dieses Problem:
PHP 8.2 führte die Funktionexecute_query() ein, die es einfach macht, vorbereitete Anweisungen mit mehreren Werten auszuführen.
Beispiel:
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $parameters = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($parameters)"; $result = $mysqli->execute_query($sql, $array); $data = $result->fetch_all(MYSQLI_ASSOC);
Für PHP 8.1 können Sie ein Array direkt an „execute()“ übergeben:
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $sql = "SELECT name FROM table WHERE city IN (".str_repeat('?,', count($array) - 1) . '?)'; $stmt = $mysqli->prepare($sql); $stmt->execute($array); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
Verwenden Sie für ältere Versionen den folgenden Ansatz:
$mysqli = new mysqli("localhost", "root", "root", "db"); $array = ['Nashville','Knoxville']; $in = str_repeat('?,', count($array) - 1) . '?'; $sql = "SELECT name FROM table WHERE city IN ($in)"; $types = str_repeat('s', count($array)); $stmt = $mysqli->prepare($sql); $stmt->bind_param($types, ...$array); $stmt->execute(); $result = $stmt->get_result(); $data = $result->fetch_all(MYSQLI_ASSOC);
Das obige ist der detaillierte Inhalt vonWie binde ich ein String-Array an eine MySQLi-WHERE-IN-Klausel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!