Chỉ các câu lệnh đã chuẩn bị mới cung cấp tính năng thoát tự động, giả sử bạn không bật một số điều xấu như dấu ngoặc kép. Và chỉ dữ liệu trong các tham số được thoát ra, không phải bất kỳ dữ liệu nào đã có trong chuỗi SQL khi bạn chuẩn bị câu lệnh.
Nếu bạn muốn những lợi ích của tính năng tự động thoát, bạn sẽ phải chuẩn bị một bảng sao kê và cung cấp dữ liệu riêng cho nó.
$sth = $dbh->prepare("SELECT * FROM users WHERE username=? AND password=?");
$sth->execute(array($username, $password));
Nếu không, bạn sẽ không được bảo vệ đối với mysqli_query
và những người bạn. (Tôi từ chối thậm chí đề cập đến mysql_query
, bởi vì không có lập trình viên PHP tự trọng nào sử dụng nó nữa. Ồ, chờ đã ... chết tiệt. Chà, đó là đề cập duy nhất mà nó có ở đây.)