Untuk mengatasi kesalahan yang Anda terima, mysql_real_escape_string()
membutuhkan koneksi terbuka melalui mysql_connect() . Karena Anda tidak memilikinya, itu mencoba untuk terhubung dan gagal (menggunakan nama pengguna matthew , sedangkan PDO Anda terhubung dengan root ). Selain itu, Anda tidak dapat (atau, tidak boleh ) campur dan cocokkan mysql_real_escape_string() dan PDO - itu perpustakaan yang berbeda.
Mengenai "kapan" menggunakan pernyataan yang disiapkan, aturan umum adalah kapan pun nilai tidak di-hardcode. Contoh Anda dari LIKE '%hotmail%' tidak perlu disiapkan, hardcoded dan tidak akan pernah berubah (kecuali Anda memperbaruinya secara manual, tentu saja).
Jika Anda memiliki kueri yang akan mengambil variabel apa pun, baik itu data dari $_POST atau $_GET , atau variabel yang dibuat 10 baris oleh pengembang sebelum kueri, Anda harus menggunakan pernyataan yang telah disiapkan (atau setidaknya menghindarinya, lihat PDO::quote
).