Để giải quyết lỗi bạn đang gặp phải, hãy mysql_real_escape_string()
yêu cầu kết nối mở qua mysql_connect()
. Vì bạn không có nên nó đang cố gắng kết nối và không thành công (sử dụng tên người dùng của matthew
, trong khi PDO của bạn đang kết nối với root
). Ngoài ra, bạn không thể (hoặc, không nên ) trộn và kết hợp mysql_real_escape_string()
và PDO
- chúng là các thư viện khác nhau.
Về "khi nào" để sử dụng các câu lệnh chuẩn bị, nguyên tắc chung là bất cứ khi nào các giá trị không được mã hóa cứng. Ví dụ của bạn về LIKE '%hotmail%'
không cần chuẩn bị, nó được mã hóa cứng và sẽ không bao giờ thay đổi (tất nhiên là trừ khi bạn cập nhật nó theo cách thủ công).
Nếu bạn có một truy vấn sẽ sử dụng một biến thuộc bất kỳ loại nào, hãy là dữ liệu từ $_POST
hoặc $_GET
hoặc một biến mà nhà phát triển đã tạo 10 dòng trước truy vấn, bạn nên sử dụng một câu lệnh đã chuẩn bị sẵn (hoặc ít nhất là thoát khỏi nó, hãy xem PDO::quote
).