Avatar ·

Como vincular um array à condição IN() em uma consulta PDO?

Olá a todos! Sou novo em PHP e PDO, e me deparei com um problema. Tenho um array de IDs de usuários, por exemplo: [1, 5, 7, 12]. Preciso selecionar da tabela users aqueles cujo id está neste array. Em SQL comum, eu escreveria:\n\nSELECT * FROM users WHERE id IN (1, 5, 7, 12)\n\nMas como fazer isso via PDO com prepared statements? Tentei assim:\n\n```php\n$ids = [1, 5, 7, 12];\n$stmt = $pdo->prepare('SELECT * FROM users WHERE id IN (:ids)');\n$stmt->execute([':ids' => $ids]);\n```\n\nMas não funciona — o PDO reclama que espera um valor scalar, não um array. Tentei implode e passar como string — também não é uma opção, porque quebra a segurança.\n\nComo vincular corretamente um array ao IN()? Preciso gerar placeholders dinamicamente? Ou existe alguma maneira esperta com PDO? Agradeço por uma resposta detalhada com exemplos.\n\nP.S. Versão PHP 8.1, usando MySQL.\n<<>>\n

Problema e sua raiz

\n

PDO não suporta vincular um array a um único placeholder na condição