Menggunakan Ekstensi PHP MySQL (mysqlnd, mysqli, PDO) di ServBay
ServBay merupakan lingkungan pengembangan Web lokal terintegrasi yang kuat, menyederhanakan interaksi antara aplikasi PHP dan database. Untuk semua versi PHP yang didukung, ekstensi penting untuk database MySQL sudah dipra-instal dan diaktifkan secara default, yaitu mysqlnd
, mysqli
, dan PDO_MySQL
. Artinya, Anda bisa langsung memulai menggunakan MySQL atau MariaDB dalam proyek PHP Anda tanpa perlu pengaturan manual tambahan.
Ekstensi MySQL PHP yang Tersedia di ServBay
ServBay membundel tiga ekstensi MySQL populer dalam lingkungan PHP yang dikelolanya, memastikan kompatibilitas dan performa terbaik:
- MySQL Native Driver (
mysqlnd
): Driver asli PHP sebagai pondasi inti bagi ekstensimysqli
danPDO_MySQL
, bertanggung jawab atas komunikasi antara PHP dan server MySQL/MariaDB. Biasanya menawarkan performa dan manajemen memori yang lebih optimal. - MySQLi (
mysqli
): Ekstensi MySQL Improved yang menyediakan antarmuka berorientasi objek dan prosedural, khusus menghubungkan PHP ke MySQL atau MariaDB — mendukung fitur lanjutan seperti prepared statements, transaksi, stored procedures, dan multi-query. - PDO MySQL (
PDO_MySQL
): Driver MySQL untuk PHP Data Objects (PDO). PDO menyediakan lapisan abstraksi database universal, sehingga pengembang bisa menggunakan API yang konsisten untuk berbagai database (MySQL, MariaDB, PostgreSQL, SQLite, dsb.), meningkatkan portabilitas kode.
Status Aktivasi
Di ServBay, ekstensi mysqlnd
, mysqli
, dan PDO_MySQL
sudah aktif secara default pada semua versi PHP. Anda tidak perlu melakukan langkah tambahan apa pun untuk mengaktifkannya. ServBay sudah mengatur konfigurasi yang diperlukan di php.ini
, sehingga Anda dapat langsung menghubungkan kode Anda ke database dengan mudah.
Penjelasan Setiap Ekstensi PHP MySQL
Memahami perbedaan ketiga ekstensi ini membantu Anda memilih solusi paling tepat sesuai kebutuhan proyek:
MySQL Native Driver (
mysqlnd
)- Fungsi utama:
mysqlnd
adalah driver asli PHP yang ditulis dalam C sebagai lapisan dasar komunikasi dengan server MySQL/MariaDB. - Fitur utama: Sejak PHP 5.3,
mysqlnd
menjadi library dasar default bagi ekstensimysqli
danPDO_MySQL
. Terintegrasi langsung ke PHP dan tidak memerlukan library klien MySQL eksternal (sepertilibmysqlclient
). - Keunggulan: Dibandingkan
libmysqlclient
lawas,mysqlnd
menawarkan performa dan manajemen memori lebih baik, dukungan query asinkron, perbaikan koneksi persisten, serta API plugin yang kaya. Anda umumnya tidak berinteraksi langsung denganmysqlnd
, melainkan memanfaatkan manfaatnya lewatmysqli
atauPDO
.
- Fungsi utama:
MySQLi (
mysqli
)- Fungsi utama: Ekstensi MySQL Improved (MySQLi) didesain khusus untuk MySQL (versi 4.1.3 ke atas) dan MariaDB.
- Fitur utama: Menyediakan dua gaya pemrograman: berorientasi objek dan prosedural. Mendukung prepared statements (untuk mencegah SQL injection), kontrol transaksi, pemanggilan stored procedure, eksekusi multi-statement, dan fitur tingkat lanjut lain.
- Keunggulan: Kaya fitur, dioptimalkan untuk MySQL/MariaDB, dan performa bagus. Jika Anda yakin proyek Anda hanya menggunakan MySQL/MariaDB serta membutuhkan fitur-fiturnya yang spesifik,
mysqli
merupakan opsi andal.
PDO MySQL (
PDO_MySQL
)- Fungsi utama: PHP Data Objects (PDO) menyediakan antarmuka universal dan ringan untuk mengakses berbagai database.
PDO_MySQL
adalah driver PDO khusus untuk MySQL/MariaDB. - Fitur utama: Pengoperasian database melalui API konsisten (seperti kelas
PDO
,PDOStatement
). Wajib menggunakan prepared statements (prepare()
danexecute()
), merupakan best practice untuk mencegah SQL injection. Mendukung transaksi. - Keunggulan: Portabilitas database adalah keunggulan utama PDO. Jika aplikasi Anda kemungkinan akan berpindah ke PostgreSQL, SQLite, atau database lain di masa depan, PDO memudahkan perubahan dengan sedikit modifikasi kode. Antarmuka yang rapi dan berorientasi objek menjadikan kode lebih ringkas dan aman. Untuk proyek baru, PDO biasanya direkomendasikan.
- Fungsi utama: PHP Data Objects (PDO) menyediakan antarmuka universal dan ringan untuk mengakses berbagai database.
Contoh Kode PHP: Koneksi & Operasi Database
Berikut contoh cara menggunakan ekstensi mysqli
dan PDO
dalam PHP untuk terhubung ke database (MariaDB atau MySQL) yang dijalankan oleh ServBay dan melakukan operasi dasar.
Prasyarat:
- MySQL atau MariaDB service sedang berjalan di ServBay.
- Sudah membuat database bernama
servbay_db
. - Sudah membuat user
servbay_user
dengan passwordyour_password
dengan hak akses keservbay_db
. - Terdapat tabel bernama
users
diservbay_db
dengan kolom:id
(INT, PK, AI),name
(VARCHAR),email
(VARCHAR),age
(INT).
Anda dapat melakukan pengaturan tersebut menggunakan phpMyAdmin bawaan ServBay atau alat manajemen database lainnya.
Contoh Kode (Metode mysqli
)
php
<?php
// --- Contoh mysqli ---
// Parameter koneksi database
$servername = "127.0.0.1"; // atau 'localhost'
$port = 3306; // Port default MySQL/MariaDB di ServBay
$username = "servbay_user";
$password = "your_password"; // Ganti dengan password Anda
$dbname = "servbay_db";
// Membuat koneksi mysqli (menggunakan OOP)
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// Periksa apakah koneksi berhasil
if ($conn->connect_error) {
die("mysqli Connection failed: " . $conn->connect_error);
}
echo "mysqli Connected successfully<br>";
// Menyisipkan data (menghindari SQL injection dengan prepared statement)
$stmt = $conn->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$name = "ServBay Demo";
$email = "[email protected]";
$age = 5;
// "ssi" menunjukkan parameter: string, string, integer
$stmt->bind_param("ssi", $name, $email, $age);
if ($stmt->execute()) {
echo "mysqli: New record created successfully<br>";
} else {
echo "mysqli Error: " . $stmt->error . "<br>";
}
$stmt->close();
// Mengambil data
$sql = "SELECT id, name, email, age FROM users WHERE name = 'ServBay Demo'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "mysqli Queried data:<br>";
// Menampilkan data hasil query
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"]. " - Age: " . $row["age"]. "<br>";
}
} else {
echo "mysqli: 0 results found<br>";
}
// Menutup koneksi
$conn->close();
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
Contoh Kode (Metode PDO
)
php
<?php
// --- Contoh PDO ---
// Parameter koneksi database
$host = '127.0.0.1'; // atau 'localhost'
$port = 3306; // Port default MySQL/MariaDB di ServBay
$dbname = 'servbay_db';
$username = 'servbay_user';
$password = 'your_password'; // Ganti dengan password Anda
$charset = 'utf8mb4';
// Data Source Name (DSN)
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
// Opsi koneksi PDO
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Mengaktifkan exception daripada warning
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Default fetch associative array
PDO::ATTR_EMULATE_PREPARES => false, // Menggunakan native prepared statement
];
try {
// Membuat instance koneksi PDO
$pdo = new PDO($dsn, $username, $password, $options);
echo "PDO Connected successfully<br>";
// Menyisipkan data (dengan prepared statement)
$sql = "INSERT INTO users (name, email, age) VALUES (:name, :email, :age)";
$stmt = $pdo->prepare($sql);
$name = 'ServBay PDO Demo';
$email = '[email protected]';
$age = 10;
// Bind parameter dan eksekusi
$stmt->execute([
':name' => $name,
':email' => $email,
':age' => $age
]);
echo "PDO: New record created successfully<br>";
// Mengambil data
$stmt = $pdo->prepare("SELECT id, name, email, age FROM users WHERE name = :name");
$stmt->execute([':name' => 'ServBay PDO Demo']);
// Mengambil semua hasil
$users = $stmt->fetchAll(); // Default FETCH_ASSOC
if ($users) {
echo "PDO Queried data:<br>";
foreach ($users as $row) {
echo "id: " . $row['id'] . " - Name: " . $row['name'] . " - Email: " . $row['email'] . " - Age: " . $row['age'] . "<br>";
}
} else {
echo "PDO: 0 results found<br>";
}
} catch (\PDOException $e) {
// Tangani dan tampilkan kesalahan koneksi atau query
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// Koneksi PDO biasanya akan tertutup otomatis di akhir script, tidak perlu tutup manual
// $pdo = null; // Bisa set null jika ingin menutup eksplisit
?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Cara menggunakan kode di atas: Simpan salah satu contoh kode di atas sebagai file .php
(misal db_test_mysqli.php
atau db_test_pdo.php
), lalu letakkan di direktori root situs web ServBay Anda (contoh: /Applications/ServBay/www/myproject/
). Kemudian akses melalui browser dengan URL seperti http://myproject.servbay.demo/db_test_mysqli.php
. Pastikan situs Anda sudah dikonfigurasi dan berjalan di ServBay.
FAQ (Pertanyaan yang Sering Diajukan)
Q: Apakah saya perlu menginstal ekstensi MySQL untuk PHP di ServBay secara manual?
A: Tidak perlu. Semua versi PHP yang dikelola ServBay sudah dipra-instal dan diaktifkan secara default untuk ekstensi penting mysqlnd
, mysqli
, dan PDO_MySQL
. Anda dapat langsung menggunakannya dalam kode PHP Anda, tanpa perlu instalasi maupun konfigurasi tambahan.
Q: Mana yang sebaiknya saya pilih, mysqli
atau PDO
?
A:
- Disarankan memakai
PDO
: Jika aplikasi Anda mungkin membutuhkan dukungan banyak database (bukan hanya MySQL/MariaDB), atau ingin kode yang lebih modern, portabel, dan berorientasi objek—PDO adalah pilihan utama. Implementasi prepared statement-nya membantu menulis kode yang lebih aman. - Pertimbangkan
mysqli
: Jika proyek Anda hanya akan menggunakan MySQL/MariaDB dan butuh fitur-fitur spesifiknya,mysqli
adalah opsi yang tangguh dan performa baik. Ia juga menawarkan antarmuka objek maupun prosedural.
Untuk proyek baru, secara umum direkomendasikan menggunakan PDO.
Q: Bagaimana cara menentukan parameter koneksi ke layanan MySQL/MariaDB di ServBay?
A:
- Host: Biasanya diisi
127.0.0.1
ataulocalhost
. - Port: Default layanan MySQL/MariaDB di ServBay biasanya
3306
. Anda dapat memeriksa port yang digunakan pada panel manajemen paket di ServBay. - Username / Password: Gunakan kredensial user database yang telah Anda buat di MySQL/MariaDB. Untuk pemula, bisa buat user baru atau gunakan user root (namun tidak disarankan untuk kode produksi). Manajemen user dan hak akses dapat dilakukan dari phpMyAdmin bawaan ServBay atau tools database lain.
- Nama Database: Isi dengan nama database yang ingin dihubungkan.
Q4: Saya punya proyek lama dengan kode mysql_*
yang sudah deprecated. Apakah ServBay mendukungnya?
A: Ya. Untuk memudahkan pengembang dalam memelihara atau migrasi aplikasi lama, ServBay secara khusus menyediakan dukungan untuk fungsi mysql_*
lawas dalam PHP 5.6 (mis. mysql_connect
). Fungsi-fungsi ini deprecated sejak PHP 5.5 dan sepenuhnya dihapus pada PHP 7.0. Dengan PHP 5.6 ServBay, Anda dapat menjalankan kode warisan tanpa mencari installer PHP versi lama.
Namun sangat disarankan:
- Gunakan fitur ini hanya sementara untuk kompatibilitas atau pemeliharaan project lama.
- Untuk proyek baru atau jika sedang refaktor, segera migrasikan kode ke ekstensi
mysqli
atauPDO
yang lebih modern dan aman. Fungsimysql_*
mengandung resiko keamanan (rawan SQL injection) serta tidak mendukung fitur database modern.
Penutup
Dengan menyediakan ekstensi mysqlnd
, mysqli
, dan PDO_MySQL
yang sudah siap pakai pada semua versi PHP, serta kompatibilitas mysql_*
untuk PHP 5.6, ServBay membuat alur kerja database bagi developer PHP jauh lebih mudah. Tidak perlu repot-repot instalasi atau konfigurasi ekstensi—cukup gunakan di kode Anda sesuai kebutuhan proyek (disarankan memakai PDO atau mysqli) untuk terkoneksi ke MySQL/MariaDB di lingkungan ServBay.
Kemudahan langsung pakai ini memungkinkan Anda fokus pada logika aplikasi, memanfaatkan lingkungan lokal yang stabil dan efisien dari ServBay untuk membangun, menguji, dan memelihara layanan web Anda dengan cepat.