Heim > Backend-Entwicklung > PHP-Tutorial > Wie binde ich ein String-Array an eine MySQLi-WHERE-IN-Klausel?

Wie binde ich ein String-Array an eine MySQLi-WHERE-IN-Klausel?

Linda Hamilton
Freigeben: 2025-01-01 14:06:12
Original
537 Leute haben es durchsucht

How to Bind an Array of Strings to a MySQLi WHERE IN Clause?

Binden eines Arrays von Strings in einer WHERE IN-Klausel mithilfe von MySQLi-vorbereiteten Anweisungen

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 und höher: Execute_query()

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);
Nach dem Login kopieren

PHP 8.1: Array in „execute()“

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);
Nach dem Login kopieren

Ältere PHP-Versionen: Prepare/Bind/Execute

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage