Камрад
alexalexes мыслит в правильном направлении, но как все новички, пишет очень много ненужного кода.
Вот более простое решение, которое и можно рекомендовать в этом случае:
$product_list = [30, 32, 38];
// получаем строку вида ?,?,? по количеству эл-тов в массиве
$placeholder_string = str_repeat('?,', count($product_list) - 1) . '?';
$sql = "SELECT * FROM `products` WHERE `productId` in ($placeholder_string)";
$query = $db->prepare($sql);
$query->execute($product_list);
$products_data = $query->fetchAll(\PDO::FETCH_ASSOC);