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

Pernyataan yang disiapkan MySQL dengan daftar variabel ukuran variabel

Saya bisa memikirkan beberapa solusi.

Salah satu solusinya mungkin dengan membuat tabel sementara. Lakukan penyisipan ke dalam tabel untuk setiap parameter yang akan Anda miliki dalam klausa in. Kemudian lakukan penggabungan sederhana terhadap tabel sementara Anda.

Metode lain mungkin dengan melakukan sesuatu seperti ini.

$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$parmcount=count($parms);   // = 4
$inclause=implode(',',array_fill(0,$parmcount,'?')); // = ?,?,?,?
$sql='SELECT age, name FROM people WHERE id IN (%s)';
$preparesql=sprintf($sql,$inclause);  // = example statement used in the question
$st=$dbh->prepare($preparesql);
$st->execute($parms);

Saya menduga, tetapi tidak memiliki bukti, bahwa solusi pertama mungkin lebih baik untuk daftar yang lebih besar, dan yang terakhir akan bekerja untuk daftar yang lebih kecil.

Untuk membuat @orrd senang di sini adalah versi singkatnya.

$dbh=new PDO($dbConnect, $dbUser, $dbPass);
$parms=array(12, 45, 65, 33);
$st=$dbh->prepare(sprintf('SELECT age, name FROM people WHERE id IN (%s)',
                          implode(',',array_fill(0,count($parms),'?'))));
$st->execute($parms);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Instal MySQL dengan phpMyAdmin di Ubuntu 14.04

  2. File PHP tidak dapat memasukkan beberapa bagian kode

  3. Akses ditolak untuk pengguna 'root'@'localhost' dengan PHPMyAdmin

  4. Ubah hasil basis data menjadi array

  5. Contoh UTC_TIME – MySQL