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