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
Linda HamiltonOriginal
2025-01-01 14:06:12572Durchsuche

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);

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);

Ä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);

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!

Stellungnahme:
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