Para resolver o erro que você está recebendo,
mysql_real_escape_string()
requer uma conexão aberta via mysql_connect()
. Como você não tem um, ele está tentando se conectar e falhando (usando um nome de usuário de matthew
, enquanto seu PDO está se conectando com root
). Além disso, você não pode (ou não deve ) misturar e combinar mysql_real_escape_string()
e PDO
- são bibliotecas diferentes. Em relação a "quando" usar declarações preparadas, a regra geral é sempre que os valores não são codificados permanentemente. Seu exemplo de
LIKE '%hotmail%'
não precisa ser preparado, é codificado e nunca vai mudar (a menos que você o atualize manualmente, é claro). Se você tiver uma consulta que receberá uma variável de qualquer tipo, seja dados de
$_POST
ou $_GET
, ou uma variável que um desenvolvedor fez 10 linhas antes da consulta, você deve usar uma declaração preparada (ou pelo menos escapar dela, confira PDO::quote
).