Chybu, kterou se vám zobrazuje, vyřešíte pomocí mysql_real_escape_string()
vyžaduje otevřené připojení pomocí mysql_connect()
. Protože žádné nemáte, pokouší se o připojení a selhává (pomocí uživatelského jména matthew
, zatímco vaše PDO se připojuje k root
). Navíc nemůžete (nebo neměli byste ) kombinovat mysql_real_escape_string()
a PDO
- jsou to různé knihovny.
Pokud jde o „kdy“ použít připravené příkazy, obecným pravidlem je vždy, když hodnoty nejsou pevně zakódovány. Váš příklad LIKE '%hotmail%'
není třeba se připravovat, je pevně zakódovaný a nikdy se nezmění (samozřejmě pokud jej ručně neaktualizujete).
Pokud máte dotaz, který bude přijímat proměnnou jakéhokoli druhu, ať už jde o data z $_POST
nebo $_GET
, nebo proměnnou, kterou vývojář vytvořil 10 řádků před dotazem, měli byste použít připravený příkaz (nebo jej alespoň escape, podívejte se na PDO::quote
).