„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie gehe ich mit „WHERE... IN“-Abfragen mit PDO um, wenn mehrere Datensätze gelöscht werden?

Wie gehe ich mit „WHERE... IN“-Abfragen mit PDO um, wenn mehrere Datensätze gelöscht werden?

Veröffentlicht am 13.11.2024
Durchsuche:482

How to Handle \

Verarbeitung von „WHERE... IN“-Abfragen mit PDO

Bei Verwendung von PDO für den Datenbankzugriff werden Abfragen mit „WHERE... IN“ verwaltet. IN“-Klauseln können eine Herausforderung darstellen. Stellen Sie sich das folgende Szenario vor: Sie müssen Einträge aus einer Datenbanktabelle entfernen, die auf einer Liste überprüfter Formularelemente basiert, dargestellt als „$idlist“ mit variabler Länge und variablem Inhalt (z. B. „260,201,221,216,217,169,210,212,213“).

Zunächst Die Verwendung einer Abfrage wie der folgenden könnte auf den ersten Blick erscheinen logical:

$query = "DELETE from `foo` WHERE `id` IN (:idlist)";

Dieser Ansatz löscht jedoch nur die erste ID. Die Kommas und nachfolgenden IDs werden fälschlicherweise ignoriert.

Um dieses Problem zu lösen, ist es wichtig, das Verhalten vorbereiteter Anweisungen in PDO zu verstehen. Werte können mithilfe nummerierter oder benannter Parameter an Platzhalter gebunden werden. Für eine „WHERE... IN“-Abfrage sollte jede ID in der Liste einen eigenen Platzhalter haben.

Die Lösung erfordert einen dynamischen Ansatz:

$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)");

Als nächstes binden Sie jede ID an ein entsprechendes Fragezeichen:

for ($i = 0; $i bindParam($i   1, $idlist[$i]);
}

Diese Methode stellt sicher, dass jedes Element in der Liste ordnungsgemäß an einen Platzhalter gebunden ist, sodass die Abfrage die gewünschten Datensätze erfolgreich löschen kann.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3