Maison  >  Article  >  développement back-end  >  Comment supprimer plusieurs éléments avec « WHERE... IN » dans les instructions préparées PDO ?

Comment supprimer plusieurs éléments avec « WHERE... IN » dans les instructions préparées PDO ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-31 22:34:02579parcourir

How to Delete Multiple Items with `WHERE... IN` in PDO Prepared Statements?

Requêtes PDO avec des clauses "WHERE... IN"

Lors de l'utilisation de la clause "WHERE... IN" dans les requêtes PDO, les développeurs rencontrent souvent des problèmes entraînant uniquement la suppression du premier élément de la liste. Cela est dû à l'incompatibilité du mélange de valeurs (nombres) avec la logique du flux de contrôle (virgules) dans les instructions préparées. Pour résoudre ce problème, chaque valeur de la liste nécessite son propre espace réservé.

Solution :

  1. Séparez les valeurs dans un tableau, par exemple :
$idlist = array('260','201','221','216','217','169','210','212','213');
  1. Construisez une chaîne de points d'interrogation représentant les espaces réservés pour chaque valeur, séparés par une virgule eux, par exemple :
$questionmarks = str_repeat("?,", count($idlist)-1) . "?";
  1. Préparez la requête avec les points d'interrogation comme paramètres de clause "IN", par exemple :
$stmt = $dbh->prepare("DELETE FROM `foo` WHERE `id` IN ($questionmarks)");
  1. Parcourez le tableau $idlist et liez chaque valeur à un espace réservé, par exemple :
foreach ($idlist as $id) {
  $stmt->bindParam($i, $id);
  $i++; 
}

Une fois l'instruction préparée et les paramètres liés, l'exécution de la requête entraînera la suppression réussie de tous les éléments spécifiés dans le tableau $idlist.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn