Saturday, November 15, 2014

Insert Data MySQL dengan PHP


Setelah berhasil membuat database dan membuat sebuah tabel didalam database tersebut, selanjutnya kita bisa menambahkan record baru kedalam tabel. Penambahan record baru ini sering disebut dengan Insert data.Record baru tersebut harus mengacu pada field didalam tabel.

Pada saat insert data perlu diperhatikan tipe data dan parameter yang menyertainya, seperti parameter primary key menyebabkan aturan tidak boleh sama dengan record yang sudah ada. Jadi akan terjadi error jika kita memasukkan data yang sama dengan record sebelumnya.

Beberapa aturan dalam insert data mySQL :
  • Dalam PHP, perintah SQL harus ditulis didalam tanda petik, contoh : "INSERT INTO..." atau 'INSERT INTO'.
  • Nilai data degan tipe string harus ditulis dalam petik, contoh : "Sabrina" atau 'Sabrina'.
  • Penggunaan tanda petik pada Query harus berbeda dengan penggunaan tanda petik pada string, contoh : "INSERT INTO...VALUES('Sabrina')".
  • Nilai data dengan tipe angka tidak ditulis dengan tanda petik, contoh : VALUES(5).
  • Nilai NULL (kata kosong) juga tidak ditulis dalam tanda petik, contoh : VALUES(5,,'Sabrina').
  • Jika sebuah field dibuat AUTO INCREMENT maka pada perintah INSERT tidak perlu disebut nilainya karena secara otomatis akan ditentukan oled database.
  • Untuk field bertipe data TIMESTAMP dengan parameter DEFAULT CURRENT_TIMESTAMP secara otomatis akan diisi dengan data waktu saat record disimpan, jadi tidak perlu disebut dalam perintah INSERT.

Format penulisan perintah insert data MySQL

INSERT INTO nama_tabel (column1, column2, column3,...)
VALUES (value1, value2, value3,...)

Sebagai contoh, kita akan melakukan insert data pada tabel User dengan field berikut ini :
  • id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,     
  • nama VARCHAR(30) NOT NULL,    
  • password VARCHAR(30) NOT NULL,    
  • email VARCHAR(50),    
  • tgl_reg TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP
Berikut query untuk membuat tabelnya :
CREATE TABLE User (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, 
nama VARCHAR(30) NOT NULL,
password VARCHAR(30) NOT NULL,
email VARCHAR(50),
tgl_reg TIMESTAMP DEFAULT CURRENT_TIMESTAMP)

Dan berikut ini script PHP dalam untuk Insert data ke tabel User :

1. Insert Data MySQL dengan MySQL Extension

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

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

 // Mengecek koneksi mysql  
 if (!$conn) die("Koneksi Gagal: " . mysql_error());  
 else echo "Koneksi MySQL Berhasil ...<br/>";   

 //membuat koneksi database   
 $dbSelected = mysql_select_db($dbName, $conn);    

 // Mengecek koneksi database  
 if (!$dbSelected) die ('Koneksi Gatabase Gagal: ' . mysql_error());  
 else echo "Koneksi Database Berhasil ...<br/>";    

 //menentukan data yang akan diinsertkan  
 $nama = "Sabrina";  
 $password = "123456";  
 $email = "sabrina20080602@gmail.com";  

 //untuk field id dan tgl_reg tidak diisi karena otomatis akan diisi oleh database

 // insert data ke tabel User  
 $sql = "INSERT INTO User (nama,password,email)  
 VALUES ('$nama', '$password', '$email')";  
 if (mysql_query($sql)) {  
   echo "Data baru berhasil dibuat...<br/><br/>";  
   echo "<b>Detail Data :</b><br/>";  
   echo "Nama = ".$nama."<br/>";  
   echo "Password = ".$password."<br/>";  
   echo "Email = ".$email."<br/>";  
 } else {  
   echo "Data baru gagal dibuat: " . mysql_error($conn);  
 }  

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

2. Insert Data 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/>";   

 //menentukan data yang akan diinsertkan  
 $nama = "Sabrina";  
 $password = "123456";  
 $email = "sabrina20080602@gmail.com";  

 //untuk field id dan tgl_reg tidak diisi karena otomatis akan diisi oleh database  

 // insert data ke tabel User  
 $sql = "INSERT INTO User (nama,password,email)  
 VALUES ('$nama', '$password', '$email')";  
 if (mysqli_query($conn, $sql)) {  
   echo "Data baru berhasil dibuat ...(dengan MySQLI Extension Procedural)<br/><br/>";  
   echo "<b>Detail Data :</b><br/>";  
   echo "Nama = ".$nama."<br/>";  
   echo "Password = ".$password."<br/>";  
   echo "Email = ".$email."<br/>";  
 } else {  
   echo "Data baru gagal dibuat: " . mysqli_error($conn);  
 }  

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

3. Insert Data 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/>";   

 //menentukan data yang akan diinsertkan  
 $nama = "Sabrina";  
 $password = "123456";  
 $email = "sabrina20080602@gmail.com";  

 //untuk field id dan tgl_reg tidak diisi karena otomatis akan diisi oleh database  

 // insert data ke tabel User  
 $sql = "INSERT INTO User (nama,password,email)  
 VALUES ('$nama', '$password', '$email')";  
 if ($conn->query($sql) === TRUE) {  
   echo "Data baru berhasil dibuat ...(dengan MySQLI Object Oriented)<br/><br/>";  
   echo "<b>Detail Data :</b><br/>";  
   echo "Nama = ".$nama."<br/>";  
   echo "Password = ".$password."<br/>";  
   echo "Email = ".$email."<br/>";  
 } else {  
   echo "Data baru gagal dibuat: " . $conn->error;  
 }  

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

4. Insert Data 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);  

   //menentukan data yang akan diinsertkan  
   $nama = "Sabrina";  
   $password = "123456";  
   $email = "sabrina20080602@gmail.com";  

   //untuk field id dan tgl_reg tidak diisi karena otomatis akan diisi oleh database  

   // insert data ke tabel User  
   $sql = "INSERT INTO User (nama,password,email)  
   VALUES ('$nama', '$password', '$email')";  

   // gunakan exec() karena tidak mengembalikan result  
   $conn->exec($sql);  
   echo "Data baru berhasil dibuat ...(dengan PDO)<br/><br/>";  
   echo "<b>Detail Data :</b><br/>";  
   echo "Nama = ".$nama."<br/>";  
   echo "Password = ".$password."<br/>";  
   echo "Email = ".$email."<br/>";  
   }  
 catch(PDOException $e)  
   {  
   echo $sql . "<br>" . $e->getMessage();  
   }  

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

2 komentar:

  1. Keren mas. setelah saya coba berhasil terinput. tapi untuk TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP kok yang masuk begini 0000-00-00 00:00:00 ?
    salahnya dimana ya Mas?

    ReplyDelete
  2. Kurang tahu ya. kalo biosa tlg script nya di email, nanti tak bantu cek.

    ReplyDelete