Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Lọc truy vấn MySQL trong PHP

Cách duy nhất là thoát đúng cách dữ liệu do người dùng gửi. Những người khác đã chỉ ra một số cách để làm như vậy.

Có một cách khác: tuyên bố chuẩn bị sẵn và trình giữ chỗ. Mọi báo cáo chuẩn bị được hỗ trợ bởi mọi hiện đại Giao diện cơ sở dữ liệu PHP, bao gồm mysqli PDO .

Hãy sử dụng PDO như một minh chứng. Giả sử chúng tôi muốn cập nhật một chút dữ liệu trong bảng foo do người dùng gửi.

$sql = 'UPDATE foo SET bar = ? WHERE user_id = ?';
$sh = $db->prepare($sql);
$sh->execute(array( $_POST['bar'], $_SESSION['user_id'] ));

Các biến trong mảng được chuyển đến execute thay thế phần giữ chỗ dấu chấm hỏi trong truy vấn. Khi điều này xảy ra, chúng được tự động thoát và được trích dẫn . Bạn không cần phải thoát chúng theo cách thủ công để đưa chúng vào cơ sở dữ liệu an toàn!

Mặt khác, bạn vẫn cần lọc chúng để tìm nội dung không mong muốn, như HTML, Javascript, các chữ cái mà bạn mong đợi là số, v.v. Làm cho dữ liệu an toàn để chèn vào cơ sở dữ liệu là chỉ một nửa trận chiến .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tôi không tìm thấy bất kỳ lỗi nào. Mã này hoạt động tốt. Cập nhật dữ liệu của tôi một cách hoàn hảo. Nhưng 1 lỗi đang hiển thị

  2. Bạn có thể bỏ qua chuẩn bị PDO nếu không có phần giữ chỗ / dữ liệu động trong một truy vấn không?

  3. Php Mysql Tìm kiếm giữa hai ngày

  4. jdbc4.MySQLSyntaxErrorException:Bảng không tồn tại trong cơ sở dữ liệu

  5. Nhiều số lượng và một nhóm theo