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

PHP PDO MySQL IN (?,?,?

Điều này là không thể theo cách bạn thử. Bạn phải có một trình giữ chỗ riêng cho mọi tham số bạn muốn truyền vào, mọi thứ khác sẽ chống lại mục đích của tham số (là tách mã khỏi dữ liệu).

$ids = array(2, 4, 6, 8);

// prepare a string that contains ":id_0,..,:id_n" and include it in the SQL
$plist = ':id_'.implode(',:id_', array_keys($ids));
$sql   = "SELECT * FROM someTable WHERE someId IN ($plist)";
// prepare & execute the actual statement
$parms = array_combine(explode(",", $plist), $ids);
$stmt  = $PDO->prepare($sql);
$rows  = $stmt->execute($parms);

Nếu bạn được phép truyền một mảng giá trị cho một tham số duy nhất trong quá trình liên kết, bạn sẽ được phép thay đổi câu lệnh SQL một cách hiệu quả. Đây sẽ là một lỗ hổng cho SQL injection - không có gì có thể đảm bảo rằng tất cả các giá trị mảng sẽ là số nguyên vô tội.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql2sqlite.sh Auto_Increment

  2. không thể tìm thấy tệp mysql.h

  3. php mysql lưu trữ ngắt dòng trong vùng văn bản trong cơ sở dữ liệu

  4. Tại sao các hàng trả về bằng giải thích không bằng count ()?

  5. Android Sqlite Insert nếu không tồn tại