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
).