Heim >Backend-Entwicklung >PHP-Tutorial >Wie binde ich ein Array von Strings an eine MySQLi WHERE IN (?)-Klausel?

Wie binde ich ein Array von Strings an eine MySQLi WHERE IN (?)-Klausel?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-25 22:05:13379Durchsuche

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

Ein Array von Strings in einer WHERE IN (?)-Klausel mit MySQLi binden

Bei der Arbeit mit MySQLi-vorbereiteten Anweisungen ist es wichtig zu verstehen wie man ein Array von Werten an eine WHERE IN (?)-Klausel bindet. Dieser Artikel bietet einen umfassenden Leitfaden zur effektiven Lösung dieses Problems.

Die Herausforderung

Das Ziel besteht darin, eine Reihe von Städtenamen dynamisch an eine WHERE IN-Klausel in einem zu binden MySQLi vorbereitete Anweisung. Der bereitgestellte Code schlägt jedoch zunächst aufgrund einer falschen Bindung des Arrays fehl.

Binden eines String-Arrays

Es gibt mehrere Ansätze zum Binden eines String-Arrays. Lassen Sie uns die verfügbaren Methoden erkunden:

1. Funktion „execute_query()“ (PHP 8.2)

Die einfachste Lösung ist in PHP 8.2 mit der Einführung der Funktion „execute_query()“ verfügbar. Mit dieser Methode können Sie sowohl die SQL-Anweisung als auch ein zu bindendes Wertearray auf einmal übergeben.

$array = ['Nashville', 'Knoxville'];
$parameters = str_repeat('?,', count($array) - 1) . '?';
$sql = "SELECT name FROM table WHERE city IN ($parameters)";
$result = $mysqli->execute_query($sql, $array);

2. Array in „execute()“ (PHP 8.1)

In PHP 8.1 können Sie ein Array direkt an die Methode „execute()“ übergeben, ohne dass Platzhalter oder Bindungen erforderlich sind.

$stmt = $mysqli->prepare($sql);
$stmt->execute($array);

3. Für ältere Versionen vorbereiten/binden/ausführen

Für Versionen vor PHP 8.1 sind die folgenden Schritte erforderlich:

  • Erstellen Sie eine Zeichenfolge mit Platzhaltern (z. B. „?, ?" für ein Array mit zwei Werten).
  • Fügen Sie diese Zeichenfolge zum hinzu Abfrage.
  • Bereiten Sie die Anweisung vor.
  • Erstellen Sie eine Zeichenfolge von Typen (z. B. „ss“ für zwei Zeichenfolgenwerte).
  • Binden Sie die Array-Werte mithilfe des Argument-Entpackens Operator.
$types = str_repeat('s', count($array));
$stmt->bind_param($types, ...$array);

Beispiel:

$array = ['Nashville', 'Knoxville'];
$in = str_repeat('?,', count($array) - 1) . '?';
$sql = "SELECT name FROM table WHERE city IN ($in)";
$stmt = $mysqli->prepare($sql);
$stmt->bind_param(str_repeat('s', count($array)), ...$array);
$stmt->execute();
$result = $stmt->get_result();

Durch Befolgen dieser Ansätze können Sie ein Array von Zeichenfolgen effektiv an ein WHERE IN (? )-Klausel in vorbereiteten MySQLi-Anweisungen.

Das obige ist der detaillierte Inhalt vonWie binde ich ein Array von Strings 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