mysql_real_escape_string() om de fout die u ontvangt te verhelpen
vereist een open verbinding via mysql_connect() . Omdat je er geen hebt, probeert het verbinding te maken en mislukt het (met een gebruikersnaam van matthew , terwijl uw PDO verbinding maakt met root ). Bovendien kunt u (of mag niet) ) mix en match mysql_real_escape_string() en PDO - het zijn verschillende bibliotheken.
Wat betreft "wanneer" om voorbereide instructies te gebruiken, is de algemene vuistregel wanneer waarden niet hardcoded zijn. Jouw voorbeeld van LIKE '%hotmail%' hoeft niet te worden voorbereid, het is hard gecodeerd en zal nooit veranderen (tenzij je het handmatig bijwerkt, natuurlijk).
Als u een zoekopdracht heeft die een variabele van welke aard dan ook inneemt, zij het gegevens van $_POST of $_GET , of een variabele die een ontwikkelaar 10 regels voor de query heeft gemaakt, moet u een voorbereide instructie gebruiken (of er in ieder geval aan ontsnappen, bekijk BOB::quote
).