Maison >développement back-end >tutoriel php >Comment puis-je lier un tableau à une clause IN() dans PDO ?

Comment puis-je lier un tableau à une clause IN() dans PDO ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-22 02:37:14867parcourir

How Can I Bind an Array to an IN() Clause in PDO?

Liaison d'un tableau à une condition IN() dans les requêtes PDO

Présentation

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().

Création d'une chaîne d'espace réservé

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éparation et exécution de la requête

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

Approche alternative : nommée Espaces réservés

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;
}

Conclusion

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!

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