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

Categories: MySQLPHP

Candra Adi Putra

Candra Adi Putra S.Kom adalah Alumni STMIK AKAKOM Yogyakarta. Ingin Kerjasama, Pasang Iklan, Membuat aplikasi Android atau Web? hubungi saya di candraadiputra (at) gmail (dot) com atau WA ke 081328533115

15 Comments

alfarel · 18 May , 2017 at 2:32 pm

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

Anonymous · 18 May , 2017 at 2:29 pm

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

Mail · 27 January , 2017 at 4:44 pm

PHP Exception

Tuluss Sabishii No Hito · 28 September , 2016 at 4:25 pm

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)

    diszaherbal · 19 April , 2017 at 11:27 am

    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.

gilang · 6 April , 2016 at 12:22 am

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

idris · 21 March , 2016 at 3:14 pm

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

idris · 21 March , 2016 at 3:12 pm

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

idris · 5 February , 2015 at 12:10 am

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

    Candra Adi Putra · 5 February , 2015 at 10:39 am

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

    Agung Zakaria · 20 April , 2016 at 10:40 am

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

Rifka Aga · 24 November , 2014 at 11:38 am

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…

    Candra Adi Putra · 24 November , 2014 at 5:00 pm

    kemungkinan mysqli tidak terinstall di php

Rifka Aga · 20 November , 2014 at 11:15 am

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

    Candra Adi Putra · 22 November , 2014 at 11:14 am

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

Tinggalkan Komentar plz!

This site uses Akismet to reduce spam. Learn how your comment data is processed.