Comment lier un tableau à la condition IN() dans une requête PDO ?
Bonjour à tous ! Je suis débutant en PHP et PDO, et j'ai rencontré un problème. J'ai un tableau d'ID d'utilisateurs, par exemple : [1, 5, 7, 12]. Je dois sélectionner dans la table users ceux dont l'id est dans ce tableau. En SQL classique, j'écrirais :
SELECT * FROM users WHERE id IN (1, 5, 7, 12)
Mais comment faire cela via PDO avec des requêtes préparées ? J'ai essayé ceci :
```php
$ids = [1, 5, 7, 12];
$stmt = $pdo->prepare('SELECT * FROM users WHERE id IN (:ids)');
$stmt->execute([':ids' => $ids]);
```
Mais cela ne fonctionne pas — PDO se plaint qu'il attend une valeur scalaire, pas un tableau. J'ai essayé implode et de passer une chaîne — ce n'est pas une option non plus, car cela casse la sécurité.
Comment lier correctement un tableau à IN() ? Dois-je générer des placeholders dynamiquement ? Ou existe-t-il une astuce avec PDO ? Je serais reconnaissant pour une réponse détaillée avec des exemples.
P.S. Version PHP 8.1, j'utilise MySQL.
<<>>
Le problème et sa racine
PDO ne supporte pas la liaison d'un tableau à un seul placeholder dans la condition
No answers yet.
Connectez-vous pour laisser une réponse