Macam-Macam Cara Membuat Koneksi Database PHP: PDO, MySQLi, dan Lainnya
Beberapa cara untuk membuat file `config.php` yang menghubungkan ke database MySQL menggunakan PHP. Setiap metode memiliki kelebihan dan kekurangan tersendiri, dan pemilihan metode tergantung pada kebutuhan dan preferensi Anda.

1. Menggunakan PDO (PHP Data Objects)
PDO adalah cara yang fleksibel dan aman untuk menghubungkan PHP ke berbagai jenis database, termasuk MySQL.
<?php
$host = 'localhost'; // Host database
$dbname = 'crud_example'; // Nama database
$username = 'root'; // Username database
$password = ''; // Password database
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Koneksi berhasil!";
} catch (PDOException $e) {
echo "Koneksi gagal: " . $e->getMessage();
}
?>
2. Menggunakan MySQLi (MySQL Improved)
MySQLi adalah ekstensi PHP yang khusus untuk MySQL. Ini mendukung pemrograman prosedural dan berorientasi objek.
Prosedural Style
<?php
$host = 'localhost'; // Host database
$username = 'root'; // Username database
$password = ''; // Password database
$dbname = 'crud_example'; // Nama database
// Membuat koneksi
$conn = mysqli_connect($host, $username, $password, $dbname);
// Cek koneksi
if (!$conn) {
die("Koneksi gagal: " . mysqli_connect_error());
}
echo "Koneksi berhasil!";
?>
Object-Oriented Style:
<?php
$host = 'localhost'; // Host database
$username = 'root'; // Username database
$password = ''; // Password database
$dbname = 'crud_example'; // Nama database
// Membuat koneksi
$conn = new mysqli($host, $username, $password, $dbname);
// Cek koneksi
if ($conn->connect_error) {
die("Koneksi gagal: " . $conn->connect_error);
}
echo "Koneksi berhasil!";
?>
3. Menggunakan MySQL (Deprecated)
Metode ini sudah tidak disarankan karena sudah dianggap usang (deprecated) sejak PHP 5.5.0 dan dihapus di PHP 7.0.0.
<?php
$host = 'localhost'; // Host database
$username = 'root'; // Username database
$password = ''; // Password database
$dbname = 'crud_example'; // Nama database
// Membuat koneksi
$conn = mysql_connect($host, $username, $password);
// Cek koneksi
if (!$conn) {
die("Koneksi gagal: " . mysql_error());
}
// Memilih database
mysql_select_db($dbname, $conn);
echo "Koneksi berhasil!";
?>
4. Menggunakan Environment Variables
Metode ini menggunakan variabel lingkungan untuk menyimpan informasi koneksi database, yang bisa lebih aman dan fleksibel.
<?php
$host = getenv('DB_HOST'); // Host database
$dbname = getenv('DB_NAME'); // Nama database
$username = getenv('DB_USER'); // Username database
$password = getenv('DB_PASS'); // Password database
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Koneksi berhasil!";
} catch (PDOException $e) {
echo "Koneksi gagal: " . $e->getMessage();
}
?>
5. Menggunakan File Konfigurasi Terpisah
Anda bisa memisahkan informasi koneksi ke file terpisah dan mengimpornya ke file `config.php`.
File: `db_config.php`
<?php
return [
'host' => 'localhost',
'dbname' => 'crud_example',
'username' => 'root',
'password' => ''
];
?>
File: `config.php`
<?php
$config = require 'db_config.php';
try {
$conn = new PDO("mysql:host={$config['host']};dbname={$config['dbname']}", $config['username'], $config['password']);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Koneksi berhasil!";
} catch (PDOException $e) {
echo "Koneksi gagal: " . $e->getMessage();
}
?>
6. Menggunakan Singleton Pattern
Singleton pattern memastikan bahwa hanya ada satu instance koneksi database yang digunakan selama runtime aplikasi.
<?php
class Database {
private static $instance = null;
private $conn;
private function __construct() {
$host = 'localhost';
$dbname = 'crud_example';
$username = 'root';
$password = '';
try {
$this->conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
echo "Koneksi gagal: " . $e->getMessage();
}
}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new Database();
}
return self::$instance;
}
public function getConnection() {
return $this->conn;
}
}
$db = Database::getInstance();
$conn = $db->getConnection();
echo "Koneksi berhasil!";
?>
Kesimpulan
PDO adalah pilihan yang baik jika Anda ingin fleksibilitas untuk bekerja dengan berbagai jenis database.
MySQLi adalah pilihan yang baik jika Anda hanya bekerja dengan MySQL dan ingin menggunakan fitur-fitur khusus MySQL.
Environment Variables dan File Konfigurasi Terpisah adalah pilihan yang baik untuk keamanan dan manajemen konfigurasi yang lebih baik.
Singleton Pattern berguna jika Anda ingin memastikan hanya ada satu koneksi database yang digunakan selama runtime aplikasi.
Pilih metode yang paling sesuai dengan kebutuhan dan lingkungan pengembangan.
Sumber resmi :
https://www.php.net/manual/en/book.pdo.php
https://www.php.net/manual/en/book.mysqli.php
https://www.php.net/manual/en/function.getenv.php
https://refactoring.guru/design-patterns/singleton/php/example
Posting Komentar