Para abordar el error que está recibiendo, mysql_real_escape_string()
requiere una conexión abierta a través de mysql_connect() . Debido a que no tiene uno, está intentando conectarse y falla (usando un nombre de usuario de matthew , mientras que su PDO se conecta con root ). Además, no puede (o no debe ) mezclar y combinar mysql_real_escape_string() y PDO - son bibliotecas diferentes.
Con respecto a "cuándo" usar declaraciones preparadas, la regla general es siempre que los valores no estén codificados. Tu ejemplo de LIKE '%hotmail%' no necesita estar preparado, está codificado y nunca cambiará (a menos que lo actualice manualmente, por supuesto).
Si tiene una consulta que incluirá una variable de cualquier tipo, ya sean datos de $_POST o $_GET , o una variable que un desarrollador hizo 10 líneas antes de la consulta, debe usar una declaración preparada (o al menos escapar de ella, consulte DOP::quote
).