Sunday, November 16, 2014

Cara Insert Multi Data Pada MySQL Dengan PHP

Dengan PHP kita juga bisa melakukan INSERT beberapa data secara sekaligus. Seperti telah dijelaskan sebelumnya pada tulisan tentang Insert data MySQL dengan PHP bahwa kita melakukan insert data dengan printah query INSERT. Nah, jika kita akan melakukan insert banyak data secara sekaligus bersamaan kita harus menggabungkan masing-masing perintah SQL INSERT tersebut.

Dalam penggabungan perintah SQL ini kita menggunakan operator dot (.) dan untuk menjalankan query hasil penggabungan kita menggunakan perintah mysqli_multi_query() pada mysqli extension. masing-masing perintah SQL harus dipisahkan dengan titik koma (;).

Catatan : menjalankan multi query hanya disupport oleh mysqli extension, jadi mysql extension tidak menyediakan fasilitas untuk menjalankan multi query.

Berikut contoh script PHP untuk melakukan insert multi data pada tabel MySQL

1. Insert multi data pada MySQL dengan MySQLI Extension (Procedural)

 <?php   
 $dbHost = "localhost";   
 $dbUser = "root";   
 $dbPass = "123";   
 $dbName = "MySQLIDB1";   

 // membuat koneksi mysql   
 $conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);   

 // mengecek koneksi mysql   
 if (!$conn) die("Koneksi Gagal: " . mysqli_connect_error());   
 else echo "Koneksi Database Berhasil ...<br/>";    

 // membuat sql untuk insert data   
 //untuk field id dan tgl_reg tidak diisi karena otomatis akan diisi oleh database  
 $sql1 = "INSERT INTO User (nama,password,email)   
 VALUES ('agus', 'abc', 'agus@website.com');";   

 $sql2 = "INSERT INTO User (nama,password,email)   
 VALUES ('budi', 'def', 'budi@website.com');";   

 $sql3 = "INSERT INTO User (nama,password,email)   
 VALUES ('candra', 'ghi', 'candra@website.com');";   

 //menggabungkan sql1, sql2 dan sql3  
 $sql = $sql1.$sql2.$sql3;  

 //menjalankan query hasil penggabungan
 if (mysqli_multi_query($conn, $sql)) {   
  echo "Data baru berhasil ditambahkan...";  
 } else {   
  echo "Data baru gagal dibuat: " . mysqli_error($conn);   
 }   

 // menutup koneksi mysql   
 mysqli_close($conn);   
 ?>   

2. Insert multi data pada MySQL dengan MySQLI Extension (Object Oriented)

<?php   
 $dbHost = "localhost";   
 $dbUser = "root";   
 $dbPass = "123";   
 $dbName = "MySQLIDB2";   

 // membuat koneksi mysql   
 $conn = mysqli_connect($dbHost, $dbUser, $dbPass, $dbName);   

 // mengecek koneksi mysql   
 if ($conn->connect_error) die("Koneksi Gagal: " . $conn->connect_error);   
 else echo "Koneksi Database Berhasil ...<br/>";    

 // membuat sql untuk insert data   
 //untuk field id dan tgl_reg tidak diisi karena otomatis akan diisi oleh database  
 $sql1 = "INSERT INTO User (nama,password,email)   
 VALUES ('agus', 'abc', 'agus@website.com');";   

 $sql2 = "INSERT INTO User (nama,password,email)   
 VALUES ('budi', 'def', 'budi@website.com');";   

 $sql3 = "INSERT INTO User (nama,password,email)   
 VALUES ('candra', 'ghi', 'candra@website.com');";   

 //menggabungkan sql1, sql2 dan sql3  
 $sql = $sql1.$sql2.$sql3;  

 //menjalankan query hasil penggabungan
 if ($conn->multi_query($sql) === TRUE) {   
  echo "Data baru berhasil ditambahkan...";  
 } else {   
  echo "Data baru gagal dibuat: " . $conn->error;   
 }   

 //menutup koneksi  
 $conn->close();   
 ?>   

3. Insert multi data pada MySQL dengan PDO

 <?php   
 $dbHost = "localhost";   
 $dbUser = "root";   
 $dbPass = "123";   
 $dbName = "MyPDODB";   

 try {   
  $conn = new PDO("mysql:host=$dbHost;dbname=$dbName", $dbUser, $dbPass);   

  // set the PDO error mode untuk exception   
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);   

  // mulai sebuah transaksi  
  $conn->beginTransaction();  

  // membuat beberapa statemen query  
  $conn->exec("INSERT INTO User (nama,password,email)   
  VALUES ('agus', 'abc', 'agus@website.com')");  

  $conn->exec("INSERT INTO User (nama,password,email)   
  VALUES ('budi', 'def', 'budi@website.com')");  

  $conn->exec("INSERT INTO User (nama,password,email)   
  VALUES ('candra', 'ghi', 'candra@website.com')");  

  // komit transaksi  
  $conn->commit();  

  //pesan jika berhasil
  echo "Data baru berhasil ditambahkan...";  
  }   
 catch(PDOException $e)   
  {   
   // roll back transaksi jika error sesuatu  
   $conn->rollback();   

   echo $sql . "<br>" . $e->getMessage();   
  }   

 // menutup koneksi   
 $conn = null;   
 ?>   
Referensi :

2 komentar:

  1. Makasih ilmunya mas., lagi belajar2 nih.

    ReplyDelete
  2. gimana caranya menjalankan beberapa query hanya dgn satu submit. misalnya query hapus pertama jalan, kemudian insert kemudian update namun dlm satu tabel yg sama. jadi antara hapus,insert,update tidak terpisah submitnya..thanks ilmunya

    ReplyDelete