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

Truy vấn được tham số hóa với một số cụm từ tìm kiếm tùy chọn

Bạn đã được bảo vệ chống lại việc tiêm sql, vì bạn đang sử dụng mysqli_stmt_bind_params sẽ thoát đúng cách cho bạn.

Chỉnh sửa. Bạn có thể chuyển sang một số khung cơ sở dữ liệu để có một mã rõ ràng và đẹp mắt.

Nếu không thì ... đây là kiểu mì spaghetti cũ quá ... nhưng tôi thích nó:D

Khá dễ dàng để mở rộng mã của bạn để hoạt động với một số lượng tham số không xác định. Bạn chỉ nên lặp lại các tham số của mình và đồng thời 1. xây dựng chuỗi truy vấn của bạn với ký hiệu dấu chấm hỏi và thêm các tham số của bạn vào một mảng mà bạn sẽ chuyển tới maxdb_stmt_bind_param (resource $ stmt, string $ type, array &$ var).

Vì vậy, nó sẽ giống như thế này. Nó giả định có ít nhất MỘT tham số ở đó (nhưng thật nhỏ để tránh điều này).

$sql = "SELECT * FROM tbl_data WHERE ";
$and = '';
$types = '';
$parameters = array();
foreach($_POST as $k => $v) {
  // check that $k is on your whitelist, if not, skip to the next item
  $sql .= "$and $k = ?";
  $and = " AND ";
  $parameters[] = $v;
  $types .= 's';
}
$stmt_query = mysqli_prepare($db, $sql);
mysqli_stmt_bind_params($stmt_query, $types, $parameters);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL đặt secure-file-priv thành nhiều thư mục

  2. Lưu lỗi vào cơ sở dữ liệu MySQL

  3. Codeigniter hoạt động chọn bản ghi, kết hợp bên trái, đếm

  4. Chọn các giá trị từ danh sách không có trong bảng

  5. Đếm số hàng trong MySQL cùng với nội dung hàng thực tế