Tutorial PHP dan MySQLi




Tutorial ini adalah kelanjutan dari Tutorial sebelumnya. Tutorial kali ini membahas operasi CRUD dengan menggunakan ektensi MySQLi. MySQLi adalah ektensi PHP yang digunakan untuk melakukan koneksi ke database MySQL. Huruf i di akhir artinya Improved (Yang disempurnakan) . Di tutorial sebelumnya sudah kita bahas koneksi database dengan ektensi default MySQL. Ada beberapa alasan mengapa KITA harus migrasi kode PHP dari kode seperti mysql_query() ke ektensi MySQLi ini. Catatan penting disini, dari sisi struktur project, struktur tabel dan interface tidak ada perubahan. Perubahan dari mySQL ke MySQLi ada dibelakang layar, terutama dari sisi performa menunjukan msyqli lebih cepat dibanding mysql.

Berikut ini adalah alasan mengapa mulai sekarang sebaiknya anda menggunakan MySQLi dalam pemrograman PHP MySQL

Point MySQL MySQLi
Pengembangan Sudah tidak lagi di kembangkan Masih terus dikembangkan
Support Resmi

Deprecated Long term support
Mendukung OOP Tidak Ya
Mendukung Prepare statement Tidak Ya
Mendukung Store procedur Tidak Ya
Mendukung Transaksi (commit, rollback) Tidak Ya

Dari tabel perbandingan diatas saja sudah sangat jelas bahwa lebih banyak kelebihan MySQLi ketimbang ektensi MySQL. Selain itu, MySQLi juga bisa digunakan secara prosedural ataupun menggunakan OOP, berikut ini gambaran fungsinya agar anda punya gambaran real tentang perbedaan kodenya.

Tabel perbandingan MySQL dan MySQLi

Hal MySQL MySQLi Prosedural MySQLi OOP
Koneksi database mysql_connect() mysqli_connect() $db = new mysqli(db_host,db_user,db_pass,db_name);
Query select mysql_query() mysqli_query() $db->query($sql)

Jadi, dengan MySQLi anda masih bisa menggunakan gaya prosedural ataupun OOP, tergantung kebiasaan anda. JIka kita lihat sekilas, gaya prosedural MySQLi sama saja dengan MysQL cuma fungsinya ditambah i, sebagai contoh mysql_query menjadi msyqli_query().

mengecek dukungan MySQLi di PHP

Untuk memastikan anda bisa memakai fungsi MySQLi, dari menu XAMPP buka phpinfo() maka jika ada tampilan berikut ini, dipastikan anda MySQLi didukung di server.

mengecek support mysqli

mengecek support mysqli

Sample Code CRUD

Interface MysqlI Bisa digunakan secara prosedural ataupun OOP, di sini saya hanya memberikan sample dengan OOP dan prepare statement yang akan memudahkan anda saat memakai Framework PHP.

Koneksi database

	define('db_host','localhost');
	define('db_user','root');
	define('db_pass','');
	define('db_name','candralab');
	
$db = new mysqli(db_host,db_user,db_pass,db_name);

if($db->connect_errno > 0){
    die('Unable to connect to database [' . $db->connect_error . ']');
}	

Tampil data

 $sql="select * from kampus ";
     if(!$result = $db->query($sql)){
     die(' query error [' . $db->error . ']');
}
 while($kampus = $result->fetch_object()){
echo $kampus->nama;
echo $kampus->alamat;
}

insert


	$sql = "INSERT INTO kampus(nama,alamat)
		VALUES(?,?)";

	$stmt = $db -> prepare($sql);
	$stmt -> bind_param('ss',$nama, $alamat);
	$stmt -> execute();
	

update

	$sql = "update kampus set nama=?,
    alamat=?
    where idkampus=?";
	$stmt = $db -> prepare($sql);
	$stmt -> bind_param('ssi',$nama, $alamat,$id);
	$stmt -> execute();

delete


	$sql = "delete from kampus
    where idkampus=?";
	$stmt = $db -> prepare($sql);
	$stmt -> bind_param('i',$id);
	$stmt -> execute();

Perhatikan pada baris $stmt->bind_param'typedata',$param1,param2...) Tipe data di param ini hanya bisa di isi dengan 4 jenis yaitu

  1. i Integer
  2. dDouble, bilangan double
  3. s String
  4. b Blob.

Yang paling sering dipakai adalah parameter i dan s. jumlah parameter pertama tipe data ini harus sesuai dengan jumlah datanya. Perhatikan waktu insert butuh 2 parameter, update 3 parameter dan delete 1 paramater. Sekali lagi, tolong pahami bagian ini, tanpa anda memahami bagian ini, code anda tidak akan berjalan sebagaimana mestinya.

OK, sampai sini dulu. Selanjutnya akan saya bahas tutorial PHP dengan PDO? apa itu PDO? simplenya begini, sekarang anda pake MySQL, terus kalau si BOS minta pakai oracle, berapa baris kode yang harus anda ganti? temukan jawabannya di tutorial selanjutnya. Happy

Tags: ,

15 thought on “Tutorial PHP dan MySQLi”

  1. alfarel says:

    Kak minta File Pdf tutorial Php dan Myslqi dong kak..
    Kirim ke email aku kak..
    please buat Tugas kak..:(

  2. Anonymous says:

    KAK minta file tutorial Php Mysqli dong kak…
    Kirimnya ke e mail kak..
    alfarelrizky99@gmail.com
    Please kak buat tugas..;(:(

  3. maaf om mau tanya apa bedanya

    define(‘db_host’,’localhost’);
    define(‘db_user’,’root’);
    define(‘db_pass’,”);
    define(‘db_name’,’candralab’);

    dengan

    $mysql_hostname = “localhost”;
    $mysql_user = “root”;
    $mysql_password = “”;
    $mysql_database = “candralab”;

    $bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die(“Could not connect database”);
    mysql_select_db($mysql_database, $bd) or die(“Could not select database”);
    $db = mysqli_connect($mysql_hostname,$mysql_user,$mysql_password,$mysql_database);

    saya ada yg gk ke baca data kalo gk make salah satu koneksi data base diatas
    mohon bantuannya terimakasih (y)

    1. diszaherbal says:

      ane pernah ngalami.. kalo gak salah define = mendefinisikan artinya data variabel tersebut tidak bisa diubah… tetap itu.. kalo misalkan variabel biasa kan contoh :
      $asal = 2;
      $asal = 3;
      yang muncul pasti angka 3. soalnya pendefinisian isi dari variabel dapat berubah,, gak kaya define… pasti error.

  4. gilang says:

    Fatal error: Call to a member function bind_param() on a non-object, itu kenapa ya pak padahal type datanya gak bermasalah…

  5. idris says:

    untuk cara prosedural apakah hanya mengubah mysql menjadi msqli, jadi hanya tinggal kita tambah ” i ” saja untuk querynya?

  6. idris says:

    untuk cara prosedural apakah hanya mengubah mysql menjadi msqli, jadi hanya tinggal kita tambah ” i ” saja untuk querynya?

  7. idris says:

    Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/u412719536/public_html/koneksi.php on line 6

    Kalo kaya gini knp ya ? Erornya pas dihosting
    Padahal di xampp ga ada eror

    1. itu karena masalah error reporting. tambahkan dibaris kedua error_reporting(0);

    2. Bisa jadi karena mysql extention sudah tidak didukung di hosting tersebut.

  8. Rifka Aga says:

    setelah saya sedikit modifikasi pada tombol add kok muncul seperti ini ya pak Fatal error: Call to a member function bind_param() on a non-object, itu kenapa padahal type datanya gak bermasalah…

    1. kemungkinan mysqli tidak terinstall di php

  9. Rifka Aga says:

    Mas, mau tanya kok waktu saya klik tombol add pada kolom nama dan alamat muncul error ini “Notice: Undefined variable: kampus in E:\Xampp\htdocs\crud\candralab-phpdb\mysqli\kampus\kampus_form.php on line 20Notice: Trying to get property of non-object in E:\Xampp\htdocs\crud\candralab-phpdb\mysqli\kampus\kampus_form.php on line 20“..Itu maksudnya apa

    1. tambahkan baris error_reporting(0); di baris pertama index.php

Comments are closed.

Related Post