Heim  >  Artikel  >  Backend-Entwicklung  >  Wie führe ich PDO-Abfragen mit „WHERE... IN“ unter Verwendung von Platzhaltern und Parametern aus?

Wie führe ich PDO-Abfragen mit „WHERE... IN“ unter Verwendung von Platzhaltern und Parametern aus?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 04:20:02759Durchsuche

How to Execute PDO Queries with

PDO-Abfragen mit „WHERE... IN“

Beim Bemühen, den Datenbankzugriff mit PDO zu verbessern, stoßen zahlreiche Entwickler auf Herausforderungen, insbesondere mit „WHERE... IN"-Abfragen. Lassen Sie uns in die Feinheiten eintauchen und den richtigen Ansatz für die Verwendung einer Liste von Elementen in einer vorbereiteten PDO-Anweisung finden.

Das „WO...IN“-Rätsel

Stellen Sie sich ein Szenario vor, in dem Sie dies tun müssen Löschen Sie Elemente aus einer Datenbank basierend auf einer Liste der überprüften Elemente aus einem Formular. Jedes Element verfügt über eine entsprechende ID, die normalerweise in einem Array gespeichert wird. Die herkömmliche „WHERE... IN“-Abfrage würde etwa so aussehen:

$query = "DELETE FROM `foo` WHERE `id` IN (:idlist)";
$st = $db->prepare($query);
$st->execute(array(':idlist' => $idlist));

Allerdings führt dieser Ansatz oft dazu, dass nur die erste ID gelöscht wird. Dies liegt daran, dass PDO die durch Kommas getrennte Liste als einzelnen Wert interpretiert und daher die nachfolgenden IDs ignoriert.

Platzhalter und Parameter berücksichtigen

Um dieses Problem zu umgehen, müssen Platzhalter und Bindungsparameter genutzt werden. Der Ansatz besteht darin, die gesamte durch Kommas getrennte Liste durch einzelne Platzhalter (Fragezeichen) zu ersetzen und das Array zu durchlaufen, um jede ID an einen Platzhalter zu binden. So würden Sie dies erreichen:

$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(1, $id);
}

Dieser überarbeitete Ansatz stellt sicher, dass jede ID als separater Parameter behandelt wird, wodurch eine genaue Ausführung der Abfrage ermöglicht wird.

Das obige ist der detaillierte Inhalt vonWie führe ich PDO-Abfragen mit „WHERE... IN“ unter Verwendung von Platzhaltern und Parametern aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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