Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

PHP PDO MySQL DI (?,?,?

Ini tidak mungkin dengan cara Anda mencobanya. Anda harus memiliki placeholder terpisah untuk setiap parameter yang ingin Anda masukkan, yang lainnya akan bertentangan dengan tujuan parameter (yaitu memisahkan kode dari data).

$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);

Jika Anda diizinkan untuk meneruskan array nilai ke parameter tunggal selama pengikatan, Anda secara efektif akan diizinkan untuk mengubah pernyataan SQL. Ini akan menjadi celah untuk injeksi SQL - bagaimanapun juga, tidak ada yang bisa menjamin bahwa semua nilai array akan menjadi bilangan bulat yang tidak bersalah.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mengapa password_verify kembali salah?

  2. Pemeran tidak valid saat mengembalikan mysql LAST_INSERT_ID() menggunakan dapper.net

  3. MySQL DB memilih catatan dengan dan tanpa umlaut. misalnya:'.. dimana sesuatu =FÖÖ'

  4. MySQL Spatial CONTAINS menunjukkan hasil yang salah

  5. Cara menggunakan orderby pada elemen yang digabungkan dengan metode Laravel Eloquent WITH