ffCCBot/2.0 (http://commoncrawl.org/faq/)
NEW!! Buku Query MySQL Lihat Detail » x

Cara Terbaru Menghubungkan MySQL Dengan PHP – MySQLi dan PDO

Untuk dapat berinteraksi dengan database, khususnya MySQL, hal pertama yang harus kita lakukan adalah menghubungkan MySQL dengan PHP. Terdapat berbagai cara untuk melakukannya, untuk itu pada kesempatan ini kita akan membahas cara menghubungkan MySQL dengan PHP.

PHP terus berkembang, fungsi fungsi bawaan yang ada juga terus di kembangkan, ada yang dipertahankan dan ada yang dihilangkan, demikian juga fungsi terkait untuk menghubungkan MySQL dengan PHP.

Menghubungkan MySQL Dengan PHP

Catatan: Selain pada MySQL, tutorial ini juga dapat digunakan untuk MariaDB (Duplikat MySQL).

MySQLi and PDO

Biasanya ketika kita ingin menghubungkan PHP dengan MySQL, kita menggunakan fungsi berikut:

mysql_connect()
mysql_select_db()
mysql_close()

Saat ini, jika sobat masih menggunakan fungsi tersebut maka sebaiknya segera ditinggalkan karena fungsi tersebut HANYA didukung hingga PHP versi 5, mulai versi 7 fungsi tersebut sudah dihilangkan, sehingga jika masih menggunakannya akan muncul fatal error.

Jadi fungsi apa yang harus digunakan?

Saat ini, PHP menyediakan dua cara untuk menghubungkan PHP dengan MySQL, yaitu dengan MySQLi (MySQL Improvement) dan PDO (PHP Data Object).

MySQLi

Dukungan prosedural programming

  • Ya, mysqli mendukung model prosedural programming.
  • Jika Sobat sudah terbiasa menggunakan fungsi mysql_xxx, maka ekstensi ini pas untuk sobat, MySQLi menyediakan fungsi yang sama dengan ekstensi mysql, kita hanya perlu mengubah mysql menjadi mysqli, misalnya: mysql_connect() menjadi mysqli_connect().

Dukungan Object Oriented Programming (OOP)

  • MySQLi mendukung Object Oriented Programming.
  • MySQLi hanya mendukung database MySQL, jadi jika sobat bekerja dengan database lain, atau merencanakan menggunakan database lain, sebaiknya gunakan PDO
  • Tidak mendukung “Named Parameter”
  • Mendukung prepare statement (mencegah SQL injection)
  • Lebih cepat dibanding PDO

PDO

Dukungan prosedural programming

  • PDO tidak mendukung model prosedural programming.
  • Jika sobat terbiasa menggunakan fungsi mysql_xxx, maka perlu belajar dari awal untuk menggunakan ekstensi ini

Dukungan Object Oriented Programming (OOP)

  • PDO mendukung Object Oriented Programming.
  • Mendukung hingga 12 database, list database yang didukung dapat dilihat disini.
  • Mendukung “Named Parameter”
  • Mendukung prepare statement (mencegah SQL injection)
  • Lebih lambat dari MySQLi

Kita akan membahas kedua fungsi tersebut.

Menghubungkan MySQL Dengan PHP

Terdapat beberapa cara dan parameter untuk menghubungkan PHP dengan MySQL, yaitu menggunakan MySQli dan PDO

Menggunakan MySQLi

Untuk prosedural programming, gunakan format mysqli_connect('nama host', 'db username', 'db password', 'nama db'), contoh:

$con = @mysqli_connect('localhost', 'root', '', 'wordpress');

if (!$con) {
    echo "Error: " . mysqli_connect_error();
	exit();
}
echo 'Koneksi berhasil';

Untuk model OOP, format yang digunakan hampir sama yaitu: new mysqli ('nama host', 'db username', 'db password', 'nama db'), contoh:

$con = @new mysqli('localhost', 'root', '', 'wordpress');

if ($con->connect_error) {
    echo "Error: " . $con->connect_error;
	exit();
}
echo 'Koneksi berhasil';

Beberapa pesan kesalahan yang  mungkin terjadi dari kode diatas:

  • Error: Access denied for user ”@’localhost’ to database ‘wordpress’ Berarti bahwa tidak dapat login ke database MySQL dengan user name dan password yang ada
  • Error: Unknown database ‘wordpress’ Berarti bahwa login berhasil dilakukan namun database wordpress tidak dapat ditemukan

Contoh lengkap:

// Open Connection
$con = @mysqli_connect('localhost', 'root', '', 'produk');

if (!$con) {
    echo "Error: " . mysqli_connect_error();
	exit();
}

// Some Query
$sql 	= 'SELECT * FROM produk';
$query 	= mysqli_query($con, $sql);
while ($row = mysqli_fetch_array($query))
{
	echo $row['nama'];
}

// Close connection
mysqli_close ($con);

Untuk mengetahui fungsi MySQLi baik menggunakan OOP Interface maupun Prosedural Interface, silakan mengunjungi: PHP: The MySQLi Extension Function Summary – Manual

Pada halaman tersebut terdapat berbagai fungsi-fungsi familiar seperti mysqli_num_fields()mysqli_fetch_row(), dan mysqli_fetch_array().

Menggunakan PDO

Berbeda dengan MySQLi, untuk menghubungkan MySQL dengan PHP menggunakan PHP PDO, kita harus menggunakan try{}catch{} block.

Maksudnya adalah try{} berarti kita mencoba menjalankan suatu script php, jika terjadi error maka error tersebut akan ditangkap catch{} sehingga output dari error akan terisolasi pada block tersebut.

Contoh:

try 
{
	$pdo = new PDO('mysql:host=localhost;dbname=produk', 'root', '');

}
catch (PDOException $e) 
{
    echo 'Error: ' . $e->getMessage();
    exit();
}
echo 'Koneksi berhasil';

Contoh lengkapnya:

// Open connection
try 
{
	$pdo = new PDO('mysql:host=localhost;dbname=produk', 'root', '');

}
catch (PDOException $e) 
{
    echo 'Error: ' . $e->getMessage();
    exit();
}

// Run Query
$sql 	= 'SELECT * FROM produk';
$stmt 	= $pdo->prepare($sql); // Mencegah SQL injection . stmt artinya statement
$stmt->execute();
while ($row = $stmt->fetch())
{
	echo $row['nama'];
}

// Close connection
$pdo = null;

Atribut pada PDO

PDO memiliki banyak attribute untuk mengatur berbagai fitur yang ada, diantaranya:

  • PDO::ATTR_ERRMODE untuk mengatur error yang ditampilkan
  • PDO::ATTR_DEFAULT_FETCH_MODE  untuk mengatur default fetch mode

Contoh penggunaan beberapa attribute sekaligus:

try 
{
	$driver_options = array(
		PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
		PDO::ATTR_ERRMODE => PDO::ATTR_ERRMODE_EXCEPTION,
		PDO::MYSQL_ATTR_LOCAL_INFILE => 1
	);
	
	$pdo = new PDO('mysql:host=localhost;dbname=produk', 'root', '', $driver_options);
}

Contoh penggunaan satu atribut:

try 
{
	$pdo = new PDO('mysql:host=localhost;dbname=produk', 'root', '');
	$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ATTR_ERRMODE_EXCEPTION);
}

Untuk list lengkap attribute yang tersedia, silakan kunjungi: PHP: PDO::setAtribute – Manual.

Catatan

Jika kita perhatikan, pada script diatas kita selalu menutup koneksi mysql setiap kali selesai menggunakan MySQL. Perlukah melakukan hal ini?  jawabnya bisa ya bisa tidak.

Jika jawabnya ya

Ya, untuk membiasakan sesuatu yang baik karena di bahasa pemrograman lain, jika koneksi tidak ditutup secara manual, maka akan terus terbuka dan tersimpan dalam memory.

Jika jawabnya tidak

PHP merupakan bahasa interpreter, seperti pyton yang artinya tidak langsung berhubungan dengan fisik komputer, seperti RAM, ada engine sendiri yang menterjemahkan bahasa PHP ke bahasa komputer yaitu Zend Engine.

Nah, untuk menjaga agar program tetap berjalan dengan baik, maka setiap akhir eksekusi script engine tersebut akan otomatis menutup semua koneksi pada database.

Artikel terkait:

Demikian pembahasan mengenai cara menghubungkan PHP dengan MySQL, semoga bermanfaat.

Recomended Post

3 Feedback dari pembaca

Silakan tinggalkan komentar

*

Like Us

Dapatkan update artikel terbaru via E-Mail
  1. Query MySQL di Dalam PHP Loop – Bad Practice !!!

  2. Software Kompres dan Optimasi Gambar / Foto (JPG dan PNG) – Tested

  3. 40+ Theme WordPress Gratis Untuk Blog – Modern & Responsive

  4. Eksklusif Cheat Sheet PHP Bahasa Indonesia – Pendamping Belajar PHP

  5. PHP FORM III: Menampilkan Data MySQL Dengan PHP dan Form HTML

  6. Tutorial PHP Form II: Menampilkan Hasil Input Form HTML dengan PHP

  7. Tutorial PHP Form I: Menghubungkan Form HTML dengan PHP

  8. Menampilkan Data Dari Beberapa Tabel MySQL – JOIN Pada MYSQL

  9. Memahami dan Menampilkan Tanggal dan Waktu Pada PHP

  10. Menghitung Selisih Waktu Dengan PHP – Cara Termudah