Koneksi PHP ke Database MySQL

Cara menghubungkan PHP ke database adalah hal yang dasar wajib diketahui. Cara sederhana tanpa koneksi database tanpa bantuan Framework tetap harus diketahui oleh programmer terutama yang masih belajar.

Pada bahasa pemrograman PHP ada 3 fungsi yang umum digunakan dalam koneksi ke database, yaitu: mysql_query, mysqli_query, dan PDO class.

Fungsi mysql (tanpa akhiran i) merupakan fungsi yang telah lama ada dan akan ditinggalkan pada versi PHP terbaru. Sebaiknya hindari menggunakan fungsi ini.

Hindari menggunakan extension mysql karena akan ditinggalkan, gunakan extension mysqli yang lebih baru

Fungsi mysqli merupakan extension yang lebih baru, huruf i di akhir extension tersebut adalah singkatan dari Improved. Lebih baik dari extension sebelum nya.

PDO (PHP Data Object) merupakan extension yang memberikan abstraction layer dalam mengakses database. PDO tidak terikat ke satu DBMS seperti mysql, untuk terhubung ke database ia membutuhkan PDO Driver tersendiri, hal ini memungkinkan aplikasi yang menggunakan PDO dapat dengan mudah untuk berganti database tanpa perlu melakukan banyak perubahan.

Koneksi Database dengan MySQLi

Koneksi ke database dengan extension mysqli adalah cara yang paling mudah dan sederhana karena penulisan syntax nya bisa menggunakan gaya prosedural maupun OOP. Pada artikel ini contoh mysqli akan menggunakan gaya prosedural.

Secara umum langkah langkah dalam koneksi ke database adalah:

  1. Membuat koneksi ke database
  2. Mengirimkan query yang kemudian akan didapat respon berupa “mysql result”
  3. Mengambil hasil dari “mysql result” yang didapat

Untuk melakukan query dan mendapatkan result nya anda hanya perlu beberapa baris kode saja seperti dibawah ini:

/* Membuat Koneksi Ke Database */
$link = mysqli_connect( "$db_host", "$db_user", "$db_password", "$database_name" ); 

/** Melakukan Query */
$result = mysqli_query( $link, "SELECT * FROM nama_tabel" ); 

/* Mengambil hasilnya dalam bentuk associative array */
$row = mysqli_fetch_assoc( $result );
print_r( $row );

Tentu kode diatas sangat sederhana, implementasinya nanti anda perlu menambahkan paling tidak error handling pada kode tersebut. Dengan adanya error handling kita mencegah kesalahan yang terjadi pada mysql agar tidak menjalar ke yang lain. contoh sederhana nya adalah menampilkan pesan error jika tidak dapat melakukan koneksi ke mysql.

Bila aplikasi memiliki beberapa file, buatlah satu file yang berisi konfigurasi & koneksi ke database yang nantinya di-include ke setiap file yang menjalankan query.

Kode lengkap kurang lebih seperti dibawah ini:

/**
 * File database.php
 */

/* Define variable agar lebih mudah */
$db_host = 'localhost';
$db_user = 'root';
$db_password = '';
$db_name = 'database';

/* Membuat koneksi ke database */
$link = mysqli_connect( "$db_host", "$db_user", "$db_password", "$db_name" ); 

/* Pastikan koneksi berhasil */
if ( mysqli_connect_errno() ) {
    printf( "Tidak dapat terhubung ke database: %s\n", 
    mysqli_connect_error() );
    exit();
}
/**
 * di bagian aplikasi (contoh: index.php)
 */

/* include file database */
require_once ('database.php');

/* Melakukan Query */
$result = mysqli_query( $link, "SELECT * FROM nama_tabel" ); 

/* Ambil hasilnya Bila Berhasil */
if ( $result ) {
    $row = mysqli_fetch_assoc( $result );
    print_r( $row ); // Tampilkan
} else {
   // Bila query gagal tampilkan pesan kesalahan
   echo mysqli_error( $link );
}

Koneksi Database dengan PDO

PDO menggunakan gaya syntax OOP (object oriented), aktifkan opsi ERRMODE_EXCEPTION agar ketika terdapat error si PDO melemparkan exception yang dapat di tangkap pada class yang anda gunakan. Try & Catch digunakan untuk menangkap error tersebut.

<?php

$db_host = 'localhost';
$db_user = 'root';
$db_password = '';
$db_name = 'nama_tabel';
$options = [
    PDO::ATTR_ERRMODE  => PDO::ERRMODE_EXCEPTION, // Throw Exception saat error
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC // Return array associaive
];

/* DSN = Data Source Name */
$dsn = "mysql:host=$db_host;dbname=$db_name;charset=utf8mb4";

try {
  $pdo = new PDO($dsn, $db_user, $db_password, $options); 
  $result = $pdo->query('SELECT * FROM nama_tabel' );
  print_r( $result->fetchAll() );
} catch( PDOException $e ) {
  echo $e->getMessage();
}

Prepared Statement

Dengan menggunakan Prepared Statement penulisan query jadi seperti menggunakan template. Anda dapat menggunakan query yang sama berulang kali namun dengan parameter yang berbeda. Extension mysqli juga sudah mendukung penggunaan prepared statement.

Prepared statement juga (katanya) lebih aman dari serangan sql injection, namun saya rasa semua itu kembali ke bagaimana cara kita menghandle user inputs. Dengan prepared statement anda tidak perlu memberikan tanda petik ke setiap value pada query, driver pdo akan melakukan itu semua. contoh kode nya seperti dibawah ini:

try {
    $query = "SELECT * FROM nam_tabel WHERE color=:name AND size=:size";
    $statement = $pdo->prepare( $query );

    $statement->execute( array( ':name' => 'you', ':size' => 'big') );
    $big_size = $statement->fetchAll();

    $statement->execute( array( ':name' => 'you', ':size' => 'small') );
    $small_size = $statement->fetchAll();
} catch(PDOException $e) {
    echo $e->getMessage();
}
Kadek Jayak
Seorang Web Developer di Denpasar Bali. Nulis blog hanya sekedar iseng dan berbagi pengalaman.
%d blogger menyukai ini: