Heim > Backend-Entwicklung > PHP-Tutorial > Wie kann ich ein Array an eine IN()-Klausel in einer PDO-Abfrage binden?

Wie kann ich ein Array an eine IN()-Klausel in einer PDO-Abfrage binden?

Susan Sarandon
Freigeben: 2024-12-19 20:33:11
Original
136 Leute haben es durchsucht

How Can I Bind an Array to an IN() Clause in a PDO Query?

Können Array-Werte an eine IN()-Bedingung in einer PDO-Abfrage gebunden werden?

Ein Array von Werten an eine IN() binden Eine Bedingung mithilfe von PDO ist möglich, erfordert jedoch eine manuelle Platzhalterkonstruktion. So geht's:

  1. Platzhalter erstellen: Erstellen Sie eine Reihe von Platzhaltern entsprechend der Anzahl der Array-Elemente. Wenn das Array beispielsweise drei Werte enthält, wäre die Platzhalterzeichenfolge „?,?“.
  2. Anweisung vorbereiten: Bereiten Sie eine PDO-Anweisung unter Verwendung der IN()-Bedingung mit den erstellten Platzhaltern vor .
  3. Anweisung ausführen: Führen Sie die vorbereitete Anweisung aus und übergeben Sie die Array-Werte als Argumente. PDO bindet und zitiert die Werte automatisch.

Hier ist ein Beispiel:

$ids = [1, 2, 3, 7, 8, 9];
$inQuery = str_repeat('?,', count($ids) - 1) . '?'; // ?,?,?,?,?,?

$stmt = $db->prepare("SELECT * FROM table WHERE id IN($inQuery)");
$stmt->execute($ids);
Nach dem Login kopieren

Bei benannten Platzhaltern:

  1. Erstellen Platzhaltersequenz: Erstellen Sie eine Sequenz benannter Platzhalter, die den Array-Elementen entsprechen, z. B. :id0,:id1,:id2.
  2. Werte sammeln: Sammeln Sie die Array-Werte in einem Schlüssel-Wert-Array unter Verwendung der Platzhaltersequenz als Schlüssel.
  3. Vorbereiten und ausführen: Bereiten Sie die Anweisung vor und führen Sie sie aus, indem Sie die Parameter zusammenführen Arrays.

Hier ist ein Beispiel:

$ids = [1, 2, 3];
$in = "";
$i = 0; // external counter
foreach ($ids as $item) {
    $key = ":id" . $i++;
    $in .= ($in ? "," : "") . $key; // :id0,:id1,:id2
    $in_params[$key] = $item; // collect values
}

$sql = "SELECT * FROM table WHERE id IN ($in)";
$stmt = $db->prepare($sql);
$stmt->execute(array_merge(["foo" => "foo", "bar" => "bar"], $in_params));
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich ein Array an eine IN()-Klausel in einer PDO-Abfrage binden?. 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