Aby rozwiązać otrzymywany błąd, mysql_real_escape_string()
wymaga otwartego połączenia przez mysql_connect() . Ponieważ go nie masz, próbuje się połączyć i kończy się niepowodzeniem (używając nazwy użytkownika matthew , podczas gdy twoje PDO łączy się z root ). Ponadto nie możesz (lub nie powinieneś ) mieszaj i dopasowuj mysql_real_escape_string() i PDO - to różne biblioteki.
Jeśli chodzi o „kiedy” użyć przygotowanych instrukcji, ogólna zasada jest taka, że wartości nie są zakodowane na sztywno. Twój przykład LIKE '%hotmail%' nie musi być przygotowany, jest zakodowany i nigdy się nie zmieni (oczywiście, chyba że ręcznie go zaktualizujesz).
Jeśli masz zapytanie, które przyjmie zmienną dowolnego rodzaju, choćby dane z $_POST lub $_GET , czyli zmienna, którą programista utworzył 10 wierszy przed zapytaniem, należy użyć przygotowanej instrukcji (lub przynajmniej ominąć ją, sprawdź PDO::cytat
).