Be aware that you will have trouble with the IN (?) clauses because SQL prepared statements have no support for arrays. So if your filter array has say 4 items then you need to generate IN (?,?,?,?) and basically merge individual filter arrays into one big array. Quite painful.
I would suggest going one step further and using another library called the Doctrine Database Access Layer which sits on top of PDO and takes care of all the messy details of handling IN statements.
I might add that you also have to deal with IN clauses with no parameters. The Doctrine library also has a query builder which makes it a bit easier.