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

15 thoughts on “Tutorial PHP dan MySQLi

  1. 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. 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.

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

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

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

  5. 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

  6. 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…

  7. 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

Comments are closed.