Maison >développement back-end >tutoriel php >Comment puis-je lier un tableau à une clause IN() dans PDO ?
Le PDO (PHP Data Objects) de PHP fournit un mécanisme pour lier des espaces réservés dans les requêtes sur les valeurs d'un tableau. Cependant, il ne prend pas en charge nativement la liaison d'un tableau de valeurs à une condition IN().
En guise de solution de contournement, vous pouvez construire manuellement une chaîne d'espace réservé en itérant sur le tableau et concaténer des espaces réservés avec des virgules.
$ids = [1, 2, 3, 7, 8, 9]; $in = str_repeat('?,', count($ids) - 1) . '?';
La variable $in contiendra une chaîne comme "?,?,?,?,?,?".
Préparez la requête à l'aide de la chaîne d'espace réservé :
$stmt = $db->prepare("SELECT * FROM table WHERE id IN($in)");
Exécutez le interrogez et transmettez le tableau comme arguments :
$stmt->execute($ids);
Pour les espaces réservés nommés, tels que :id0, :id1, :id2, etc., vous devrez créer manuellement une séquence d'espaces réservés et collecter les valeurs dans un tableau associatif.
$i = 0; $in_params = []; foreach ($ids as $item) { $key = ":id" . $i++; $in_params[$key] = $item; $in .= ($in ? ',' : '') . $key; }
Bien que PDO ne permette pas explicitement de lier un tableau à une condition IN(), vous pouvez répliquer la fonctionnalité en construisant manuellement un chaîne d'espace réservé ou en utilisant des espaces réservés nommés avec un tableau associatif. Ces approches fournissent un moyen pratique de gérer les tableaux dans les conditions IN() dans les requêtes PDO.
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!