Heim > Artikel > Backend-Entwicklung > Wie lösche ich mehrere Elemente mit „WHERE... IN“ in PDO-vorbereiteten Anweisungen?
PDO-Abfragen mit „WHERE... IN“-Klauseln
Bei Verwendung der „WHERE... IN“-Klausel in PDO-Abfragen Entwickler stoßen häufig auf Probleme, die dazu führen, dass nur das erste Element aus der Liste gelöscht wird. Dies liegt daran, dass das Mischen von Werten (Zahlen) mit der Kontrollflusslogik (Kommas) innerhalb vorbereiteter Anweisungen nicht kompatibel ist. Um dieses Problem zu lösen, benötigt jeder Wert in der Liste einen eigenen Platzhalter.
Lösung:
$idlist = array('260','201','221','216','217','169','210','212','213');
$questionmarks = str_repeat("?,", count($idlist)-1) . "?";
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
foreach ($idlist as $id) { $stmt->bindParam($i, $id); $i++; }
Sobald die Anweisung vorbereitet und die Parameter gebunden sind, führt die Ausführung der Abfrage zum erfolgreichen Löschen aller im $idlist-Array angegebenen Elemente.
Das obige ist der detaillierte Inhalt vonWie lösche ich mehrere Elemente mit „WHERE... IN“ in PDO-vorbereiteten Anweisungen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!