bind_param is puur bedoeld om waarden in je query te stoppen. Deze hoef je verder ook niet te escapen, dat wordt dan door de database zelf gedaan. Als je meerdere waarden hebt heb je uiteraard ook meerdere bind_params.
Mits goed gebruikt is bindParam krachtig en veilig. Het nadeel is dat bij verkeerd gebruik al die meerwaarde overboord gaat. Denk hierbij aan alsnog waarden direct in de query plaatsen. Dat is iets dat ik vaak zie gebeuren (zie diverse topics op het forum) en doet de hele veiligheid teniet.
(ik zou trouwens htmlspecialchars() gebruiken in plaats van htmlentities() ivm betere compatibiliteit met bepaalde documenttypen - denk aan XML)
Anyhow, ik heb PDO altijd een rare gevonden. PDO alleen is eigenlijk niet genoeg. Als je dan toch de PDO-weg inslaat, ga dan ook "the whole way" en bouw ook een database abstractie laag. Als je enkel gebruik maakt van MySQL, waarom maak je dan geen gebruik van MySQLi? PDO is niet geschreven voor een specifieke database en alle adders onder het gras zitten (o.a.) in de database-specifieke drivers (PDO_MYSQL). MySQLi is daarentegen specifiek geschreven en geoptimaliseerd voor gebruik van MySQL (en wellicht ook voor MariaDB).
PDO vs mysqli, zeer intressant.
Ik was nu begonnen met PDO te gebruiken omdat ik dacht dat dit veiliger was.
Dat is voor mij het belangrijkste, hiervoor deed ik alles met mysql/mysqli.
Als je niet verwacht dat je ooit van database gaat wisselen zou ik zeggen maak gewoon gebruik van mysqli. Beide extensies zijn met hun mysql/mariadb specifieke functies even krachtig en even snel. En zelfs als je verwacht dat de database wisselt is het gebruiken van PDO niet genoeg. Je zult dan database specifieke queries moeten gaan schrijven. Denk aan het hebben van een insert_id in mysql/mariadb en het gebruik van RETURNING in een query in postgresql.