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

Masukkan sejumlah besar variabel ke dalam tabel menggunakan PDO

Kueri yang disiapkan secara dinamis

Anda dapat membuat kueri secara dinamis dari array $_POST:

Namun, JANGAN PERNAH mempercayai masukan pengguna, yang berarti Anda tidak dapat mempercayai bahwa data di $_POST akan berisi nama kolom yang valid.

1. Bersihkan data pos

Anda dapat menentukan larik nama kolom yang masuk daftar putih $whitelist = array('field1', 'field2', ...) , lalu gunakan:

$data = array_intersect_key($_POST, array_flip($whitelist));

untuk menemukan perpotongan antara kolom yang masuk daftar putih dan larik $_POST Anda. (Terima kasih @BillKarwin)

2. Buat kueri

private function buildInsertSql($data, $table) {
    $columns = "";  
    $holders = "";  
    foreach ($data as $column => $value) {  
       $columns .= ($columns == "") ? "" : ", ";  
       $columns .= $column;  
       $holders .= ($holders == "") ? "" : ", ";  
       $holders .= ":$column";  
    }  
    $sql = "INSERT INTO $table ($columns) VALUES ($holders)";  
    return $sql; 
}

Ini akan memberi Anda pernyataan SQL dalam bentuk:

$sql = INSERT INTO directory (field1, field2) VALUES (:field1, :field2)

dan siapkan pernyataan:

$stmt = $dbh->prepare($sql);

3. Mengikat parameter

Anda kemudian dapat secara dinamis mengikat parameter ke placeholder:

foreach ($data as $placeholder => $value) {
    $stmt->bindValue(":$placeholder", $value);
 }

dan jalankan:

$stmt->execute();

Sedikit lebih maju...



  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 mendapatkan catatan yang berisi karakter alfaNumerik + spasi putih

  2. MySQL GROUP_CONCAT melarikan diri

  3. MySQL JOIN / GROUP_CONCAT tabel kedua?

  4. Bagaimana cara membuat tautan berikutnya dan sebelumnya dengan php?

  5. Secara otomatis menambahkan huruf di depan bidang kenaikan otomatis