Heim > Backend-Entwicklung > PHP-Tutorial > Wie lösche ich Datensätze mit \'WHERE... IN\'-Klauseln in PDO-Abfragen effektiv?

Wie lösche ich Datensätze mit \'WHERE... IN\'-Klauseln in PDO-Abfragen effektiv?

Linda Hamilton
Freigeben: 2024-10-30 03:03:02
Original
526 Leute haben es durchsucht

How to Effectively Delete Records with

PDO-Abfragen mit „WHERE... IN“-Klauseln

Wenn Sie mit PHPs PDO für den Datenbankzugriff arbeiten, erstellen Sie „WHERE... IN“-Abfragen können eine Herausforderung sein. In diesem Fall besteht das Ziel darin, Datensätze aus einer Tabelle basierend auf einer Liste von IDs zu löschen, die aus einem Formular erhalten wurden.

Ursprüngliche Abfrage

<code class="php">$query = "DELETE from `foo` WHERE `id` IN (:idlist)";
$st = $db->prepare($query);
$st->execute(array(':idlist' => $idlist));</code>
Nach dem Login kopieren

Problem

Diese Abfrage löscht nur die erste ID in der Liste und verwirft die restlichen IDs aufgrund des Komma-Trennzeichens.

Lösung mit Fragezeichen

Da vorbereitete Anweisungen keine Werte mit der Kontrollflusslogik (den Kommas) vermischen können, ist es notwendig, einen Platzhalter pro Wert in der Liste zu verwenden. Dies wird erreicht, indem eine durch Kommas getrennte Folge von Fragezeichen erstellt und die einzelnen IDs an diese gebunden werden.

<code class="php">$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($id);
}</code>
Nach dem Login kopieren

Dieser Ansatz erfordert ein Durchlaufen der Liste, um jede ID nacheinander zu binden und sicherzustellen, dass alle Datensätze als gelöscht werden beabsichtigt.

Das obige ist der detaillierte Inhalt vonWie lösche ich Datensätze mit 'WHERE... IN'-Klauseln in PDO-Abfragen effektiv?. 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