För att åtgärda felet du får, mysql_real_escape_string()
kräver en öppen anslutning via mysql_connect()
. Eftersom du inte har en, försöker den att ansluta och misslyckas (med användarnamnet matthew
, medan din PDO ansluter med root
). Dessutom kan du inte (eller bör inte). ) blanda och matcha mysql_real_escape_string()
och PDO
- de är olika bibliotek.
När det gäller "när" för att använda förberedda uttalanden, är den allmänna tumregeln när värden inte är hårdkodade. Ditt exempel på LIKE '%hotmail%'
behöver inte förberedas, den är hårdkodad och kommer aldrig att ändras (såvida du inte uppdaterar den manuellt, förstås).
Om du har en fråga som tar in en variabel av något slag, kan det vara data från $_POST
eller $_GET
, eller en variabel som en utvecklare gjorde 10 rader före frågan, bör du använda en förberedd sats (eller åtminstone undkomma den, kolla in PDO::quote
).