PDO valid characters for placeholders
Solution 1:
The easiest way to find out, is to just check the source code:
BINDCHR = [:][a-zA-Z0-9_]+;
You can use alphanumeric + underscore.
Solution 2:
If I read the PDO SQL parser source code correctly, it's alphanumeric characters plus underscore.