Menggunakan Sambungan PHP MySQL (mysqlnd, mysqli, PDO) dalam ServBay
ServBay ialah satu persekitaran pembangunan web tempatan yang bersepadu dan berkuasa, memudahkan lagi interaksi aplikasi PHP dengan pangkalan data. Ia telah memuatkan dan mengaktifkan secara lalai sambungan pangkalan data MySQL penting untuk semua versi PHP yang disokong, termasuk mysqlnd
, mysqli
dan PDO_MySQL
. Ini bermakna anda boleh terus menggunakan pangkalan data MySQL atau MariaDB dalam projek PHP anda tanpa perlu konfigurasi manual.
Sambungan PHP MySQL tersedia dalam ServBay
ServBay membawakan tiga sambungan MySQL arus perdana yang terbina dalam persekitaran PHP kendaliannya, memastikan keserasian dan prestasi:
- MySQL Native Driver (
mysqlnd
): Pemacu natif PHP yang berfungsi sebagai pustaka asas untukmysqli
danPDO_MySQL
. Ia mengendalikan komunikasi dengan pelayan MySQL/MariaDB secara terus, biasanya menawarkan prestasi dan pengurusan memori yang lebih baik. - MySQLi (
mysqli
): Sambungan MySQL Improved menyediakan antara muka berorientasikan objek dan prosedur. Ia direka khusus untuk menghubungkan dengan pangkalan data MySQL dan MariaDB, menyokong ciri lanjutan seperti penyataan pra-siap (prepared statements), transaksi, prosedur tersimpan, dan kueri berbilang penyataan. - PDO MySQL (
PDO_MySQL
): Pemacu MySQL untuk PHP Data Objects (PDO). PDO menawarkan lapisan abstraksi pangkalan data yang seragam, membolehkan pembangun berinteraksi dengan pelbagai jenis pangkalan data (MySQL, MariaDB, PostgreSQL, SQLite dan lain-lain) menggunakan API yang konsisten, sekaligus meningkatkan kebolehportaan kod.
Status Pengaktifan
Dalam ServBay, sambungan mysqlnd
, mysqli
dan PDO_MySQL
diaktifkan secara lalai untuk semua versi PHP. Anda tidak perlu mengambil sebarang langkah tambahan untuk mengaktifkannya. ServBay sudah pun mengurus konfigurasi berkaitan dalam php.ini
, jadi anda boleh terus menggunakan sambungan tersebut untuk menghubungkan ke pangkalan data dalam kod anda.
Perincian setiap Sambungan PHP MySQL
Memahami perbezaan ketiga-tiga sambungan ini membolehkan anda memilih yang paling sesuai mengikut keperluan projek anda:
MySQL Native Driver (
mysqlnd
)- Fungsi Utama:
mysqlnd
ialah pemacu natif PHP yang ditulis dalam C, bertindak sebagai lapisan asas bagi komunikasi antara PHP dan pelayan MySQL/MariaDB. - Ciri-ciri Utama: Sejak PHP 5.3,
mysqlnd
menjadi pustaka bawah untuk sambunganmysqli
danPDO_MySQL
. Ia diintegrasi terus ke PHP dan tidak memerlukan pautan ke pustaka klien MySQL luaran sepertilibmysqlclient
. - Kelebihan Utama: Berbanding
libmysqlclient
yang lama,mysqlnd
biasanya menawarkan prestasi lebih baik, pengurusan memori lebih cekap, serta menyokong ciri-ciri moden seperti kueri asinkron, penambahbaikan sambungan berterusan dan API plugin yang pelbagai. Anda biasanya tidak perlu berinteraksi terus dengan APImysqlnd
, sebaliknya kelebihannya dinikmati melalui penggunaanmysqli
atauPDO
.
- Fungsi Utama:
MySQLi (
mysqli
)- Fungsi Utama: MySQL Improved Extension ialah sambungan PHP yang khusus untuk MySQL (versi 4.1.3 ke atas) dan MariaDB.
- Ciri-ciri Utama: Menyediakan dua gaya pemrograman: berorientasikan objek (Object-Oriented) dan prosedur (Procedural). Menyokong penyataan pra-siap (untuk mencegah suntikan SQL), kawalan transaksi, panggilan prosedur tersimpan dan pelaksanaan berbilang penyataan.
- Kelebihan Utama: Kaya ciri dan dioptimum khas untuk MySQL/MariaDB, dengan prestasi yang mantap. Jika projek anda hanya menggunakan MySQL atau MariaDB dan memerlukan ciri-ciri khususnya,
mysqli
ialah pilihan yang boleh dipercayai.
PDO MySQL (
PDO_MySQL
)- Fungsi Utama: PHP Data Objects (PDO) menyediakan antara muka ringan dan seragam untuk akses ke pelbagai pangkalan data.
PDO_MySQL
ialah pemacu khusus untuk MySQL/MariaDB. - Ciri-ciri Utama: Operasi pangkalan data dilakukan melalui API seragam (seperti kelas
PDO
danPDOStatement
). Wajib menggunakan penyataan pra-siap (prepare()
danexecute()
), satu amalan terbaik untuk mengelakkan suntikan SQL. Menyokong transaksi. - Kelebihan Utama: Kebolehportaan pangkalan data ialah nilai utama PDO. Jika aplikasi anda mungkin beralih ke PostgreSQL, SQLite atau pangkalan data lain di masa hadapan, penggunaan PDO dapat meminimumkan pengubahsuaian kod. Ia juga menawarkan antara muka berorientasikan objek yang jelas, menjadikan kod lebih ringkas dan selamat. Untuk projek baru, selalunya PDO lebih digalakkan.
- Fungsi Utama: PHP Data Objects (PDO) menyediakan antara muka ringan dan seragam untuk akses ke pelbagai pangkalan data.
Contoh Kod PHP: Sambungan dan Operasi Pangkalan Data
Contoh berikut memaparkan cara menggunakan sambungan mysqli
dan PDO
dalam PHP untuk menyambung ke pangkalan data yang dikendalikan oleh ServBay (sama ada MariaDB atau MySQL) dan melaksanakan operasi asas.
Prasyarat:
- Perkhidmatan MySQL atau MariaDB telah dijalankan dalam ServBay.
- Pangkalan data bernama
servbay_db
sudah dicipta. - Pengguna bernama
servbay_user
telah dicipta dengan kata laluanyour_password
, dan diberi hak akses keservbay_db
. - Terdapat jadual bernama
users
dalamservbay_db
yang mengandungi lajurid
(INT, PK, AI),name
(VARCHAR),email
(VARCHAR), danage
(INT).
Anda boleh menggunakan phpMyAdmin terbina dalam ServBay atau alat pengurusan pangkalan data lain untuk menetapkan perkara di atas.
Contoh Kod (mysqli
)
php
<?php
// --- mysqli contoh ---
// Parameter sambungan pangkalan data
$servername = "127.0.0.1"; // atau 'localhost'
$port = 3306; // port lalai MySQL/MariaDB dalam ServBay
$username = "servbay_user";
$password = "your_password"; // Sila tukar dengan kata laluan sebenar anda
$dbname = "servbay_db";
// Cipta sambungan mysqli (gaya berorientasikan objek)
$conn = new mysqli($servername, $username, $password, $dbname, $port);
// Periksa sama ada sambungan berjaya
if ($conn->connect_error) {
die("mysqli Connection failed: " . $conn->connect_error);
}
echo "mysqli Connected successfully<br>";
// Masukkan data (gunakan prepared statement untuk elak suntikan SQL)
$stmt = $conn->prepare("INSERT INTO users (name, email, age) VALUES (?, ?, ?)");
$name = "ServBay Demo";
$email = "[email protected]";
$age = 5;
// "ssi" bermaksud 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();
// Query 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>";
// Papar data
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>";
}
// Tutup sambungan
$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 Kod (PDO
)
php
<?php
// --- PDO contoh ---
// Parameter sambungan pangkalan data
$host = '127.0.0.1'; // atau 'localhost'
$port = 3306; // port lalai MySQL/MariaDB dalam ServBay
$dbname = 'servbay_db';
$username = 'servbay_user';
$password = 'your_password'; // Sila tukar dengan kata laluan sebenar anda
$charset = 'utf8mb4';
// Nama Sumber Data (DSN)
$dsn = "mysql:host=$host;port=$port;dbname=$dbname;charset=$charset";
// Pilihan sambungan PDO
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, // Buang pengecualian, bukan amaran
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, // Ambil secara asosiatif secara lalai
PDO::ATTR_EMULATE_PREPARES => false, // Guna prepared statement asli
];
try {
// Cipta instance sambungan PDO
$pdo = new PDO($dsn, $username, $password, $options);
echo "PDO Connected successfully<br>";
// Masukkan data (gunakan 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 laksana
$stmt->execute([
':name' => $name,
':email' => $email,
':age' => $age
]);
echo "PDO: New record created successfully<br>";
// Query data
$stmt = $pdo->prepare("SELECT id, name, email, age FROM users WHERE name = :name");
$stmt->execute([':name' => 'ServBay PDO Demo']);
// Dapatkan semua keputusan
$users = $stmt->fetchAll(); // Mod FETCH_ASSOC secara lalai
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) {
// Tangkap dan papar ralat sambungan atau query
throw new \PDOException($e->getMessage(), (int)$e->getCode());
}
// Sambungan PDO biasanya akan ditutup secara automatik pada akhir skrip, tidak perlu panggil close() secara eksplisit
// $pdo = null; // Anda boleh set kepada null untuk tutup sambungan secara 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
Letakkan kod: Simpan mana-mana contoh kod di atas sebagai fail .php
(contohnya db_test_mysqli.php
atau db_test_pdo.php
) dan letakkan dalam direktori root tapak web anda dalam ServBay (cth. /Applications/ServBay/www/myproject/
). Kemudian akses fail tersebut melalui pelayar web pada URL seperti http://myproject.servbay.demo/db_test_mysqli.php
. Pastikan tapak anda telah dikonfigurasi dan dijalankan dengan betul dalam ServBay.
Soalan Lazim (FAQ)
S: Perlukah saya memasang sambungan MySQL untuk PHP secara manual di ServBay?
J: Tidak perlu. Semua versi PHP yang dikendalikan oleh ServBay sudah diprapasang dan diaktifkan secara lalai untuk tiga sambungan penting pangkalan data MySQL — mysqlnd
, mysqli
, dan PDO_MySQL
. Anda boleh terus menggunakannya dalam kod PHP tanpa sebarang pemasangan atau langkah konfigurasi tambahan.
S: Mana satu patut saya pilih, mysqli
atau PDO
?
J:
- Disyorkan menggunakan
PDO
: Jika aplikasi anda mungkin perlu menyokong pelbagai jenis pangkalan data atau anda mahukan kod yang lebih moden, berorientasikan objek dan mudah dipindahkan ke teknologi lain, PDO adalah pilihan utama. PDO juga menguatkuasakan penggunaan prepared statement bagi kod yang lebih selamat. - Pertimbangkan
mysqli
: Jika projek anda hanya akan menggunakan MySQL atau MariaDB, dan anda memerlukan ciri lanjutan tertentu milik mereka,mysqli
menawarkan ciri mendalam berserta prestasi benaik. Ia juga menyokong antara muka berorientasikan objek dan prosedural.
Untuk projek baharu, PDO adalah pilihan utama yang lebih disarankan.
S: Bagaimana menentukan parameter sambungan untuk perkhidmatan MySQL/MariaDB di ServBay?
J:
- Hostname (Host): Selalunya
127.0.0.1
ataulocalhost
. - Port: Port lalai untuk MySQL dan MariaDB dalam ServBay biasanya ialah
3306
. Anda boleh periksa port sebenar di antara muka pengurusan perisian ServBay. - Nama Pengguna/Kata Laluan: Gunakan bukti pengenalan pengguna pangkalan data yang telah anda cipta dalam MySQL/MariaDB. Jika ini penggunaan pertama anda, anda mungkin perlu cipta pengguna baru atau gunakan akaun root (tidak disyorkan untuk kod produksi). Anda boleh urus pengguna dan kebenaran melalui phpMyAdmin terbina dalam ServBay atau alat pangkalan data lain.
- Nama Pangkalan Data: Nama pangkalan data yang anda ingin sambungkan.
S4: Saya ada projek lama yang menggunakan fungsi usang mysql_*
, adakah ia disokong oleh ServBay?
J: Ya, untuk memudahkan pembangun menyelenggara atau migrasikan aplikasi lama, ServBay secara khusus menyediakan sokongan fungsi usang mysql_*
(seperti mysql_connect
) melalui PHP 5.6. Semua fungsi itu telah dihentikan pada PHP 5.5 dan dibuang sepenuhnya dalam PHP 7.0. Dengan PHP 5.6 di ServBay, anda boleh terus menjalankan kod lama tanpa perlu mencari versi PHP yang lebih usang.
Namun, sangat digalakkan agar anda:
- Hanya gunakan fungsi lama ini untuk kesesuaian sementara atau penyelenggaraan projek warisan.
- Untuk projek baharu atau semasa penstrukturan semula kod lama, pindahkan kod anda kepada sambungan
mysqli
atauPDO
yang lebih moden dan selamat. Fungsimysql_*
bukan sahaja berisiko keselamatan (mudah menjadi sasaran serangan suntikan SQL) tetapi juga tidak menyokong ciri-ciri moden pangkalan data.
Kesimpulan
ServBay dengan memuatkan dan mengaktifkan secara lalai sambungan mysqlnd
, mysqli
, dan PDO_MySQL
untuk semua versi PHP, serta menyediakan sokongan fungsi mysql_*
yang lama untuk PHP 5.6, sangat mempermudah rutin pembangunan pangkalan data untuk pembangun PHP. Anda tidak perlu risau tentang pemasangan atau konfigurasi sambungan secara manual. Apa yang perlu, cuma pilih sambungan yang paling sesuai mengikut keperluan projek anda (disyorkan PDO atau mysqli) dan teruskan membina dan mengendalikan pangkalan data MySQL atau MariaDB dalam sekitaran ServBay.
Kemudahan "plug-and-play" ini membolehkan anda berfokus penuh kepada pembangunan logik aplikasi, sementara ServBay menyediakan persekitaran pembangunan tempatan yang stabil dan pantas — mempercepat pembangunan, ujian serta penyelenggaraan perkhidmatan web anda.