Cómo vincular un array a la condición IN() en una consulta PDO
¡Hola a todos! Soy nuevo en PHP y PDO, y me encontré con un problema. Tengo un array de IDs de usuarios, por ejemplo: [1, 5, 7, 12]. Necesito seleccionar de la tabla users aquellos cuyo id esté en este array. En SQL normal escribiría:
SELECT * FROM users WHERE id IN (1, 5, 7, 12)
Pero, ¿cómo hacerlo con PDO usando consultas preparadas? Intenté así:
```php
$ids = [1, 5, 7, 12];
$stmt = $pdo->prepare('SELECT * FROM users WHERE id IN (:ids)');
$stmt->execute([':ids' => $ids]);
```
Pero no funciona — PDO se queja de que espera un valor escalar, no un array. Intenté con implode y pasar un string — tampoco es una opción, porque rompe la seguridad.
¿Cómo vincular correctamente un array a IN()? ¿Necesito generar placeholders dinámicamente? ¿O hay algún truco con PDO? Agradecería una respuesta detallada con ejemplos.
P.D. Uso PHP 8.1 y MySQL.
<<>>
El problema y su raíz
PDO no admite la vinculación de un array a un solo placeholder en la condición