Heim > Backend-Entwicklung > PHP-Tutorial > Kann PDO die Array-Bindung für IN()-Klauselabfragen verarbeiten?

Kann PDO die Array-Bindung für IN()-Klauselabfragen verarbeiten?

DDD
Freigeben: 2024-12-25 07:52:14
Original
585 Leute haben es durchsucht

Can PDO Handle Array Binding for IN() Clause Queries?

Kann die Bindung eines Arrays an eine IN()-Bedingung mit PDO erfolgen?

Die Verwendung von Arrays in PDO-Abfragen für IN()-Bedingungen ist möglich Dies kann durch manuelles Erstellen der Platzhalter für jedes Array-Mitglied erreicht werden. Hier ist eine Aufschlüsselung des Prozesses:

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

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

Konstruieren Sie die Variable $inQuery mit str_repeat, um eine Liste von Platzhaltern zu erstellen. Dadurch wird sichergestellt, dass jedes Array-Mitglied über einen entsprechenden Platzhalter verfügt.

Ein anderer Ansatz besteht darin, Arrays zusammenzuführen, die Platzhalter und die zugehörigen Werte enthalten. Diese Methode eignet sich, wenn andere Platzhalter in der Abfrage vorhanden sind.

$arr = [1,2,3];
$in  = str_repeat('?,', count($arr) - 1) . '?';
$sql = "SELECT * FROM table WHERE foo=? AND column IN ($in) AND bar=? AND baz=?";
$stmt = $db->prepare($sql);
$params = array_merge([$foo], $arr, [$bar, $baz]);
$stmt->execute($params);
$data = $stmt->fetchAll();
Nach dem Login kopieren

Benannte Platzhalter erfordern einen etwas anderen Ansatz, bei dem Sie eine entsprechende Platzhaltersequenz erstellen, z. B. :id0,:id1,:id2.

$ids = [1,2,3];
$in = "";
$i = 0;
foreach ($ids as $item) {
    $key = ":id" . $i++;
    $in .= ($in ? "," : "") . $key;
    $in_params[$key] = $item;
}

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

Diese Methoden bieten eine sichere und effiziente Möglichkeit, Arrays in IN()-Bedingungen mit PDO zu verwenden.

Das obige ist der detaillierte Inhalt vonKann PDO die Array-Bindung für IN()-Klauselabfragen verarbeiten?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage