Trong bài hướng dẫn tự học PHP này, bạn sẽ học cách kết nối với máy chủ MySQL bằng PHP với MySQLi và PDO.
Các cách kết nối với MySQL bằng PHP
Để lưu trữ hoặc truy cập dữ liệu bên trong cơ sở dữ liệu MySQL, trước tiên bạn cần kết nối với máy chủ cơ sở dữ liệu MySQL.
PHP cung cấp hai công cụ khác nhau để kết nối với máy chủ MySQL:
- MySQLi (MySQL cải tiến)
- PDO (PHP Data Object)
PDO thì di động hơn và hỗ trợ hơn 12 cơ sở dữ liệu khác nhau, còn MySQLi tập trung hỗ trợ cơ sở dữ liệu MySQL.
Tuy nhiên, MySQLi cung cấp một cách dễ dàng hơn để kết nối và thực hiện các truy vấn trên máy chủ cơ sở dữ liệu MySQL.
Cả PDO và MySQLi đều cung cấp API hướng đối tượng, nhưng MySQLi cũng cung cấp cả API hướng thủ tục tương đối dễ hiểu cho người mới bắt đầu Học lập trình web PHP & MySQL.
Lưu ý 1: MySQLi của PHP cung cấp cả lợi ích về tốc độ và tính năng so với phần mở rộng PDO, vì vậy nó có thể là lựa chọn tốt hơn cho các dự án web dành riêng cho MySQL.
Hướng dẫn 3 cách kết nối PHP với MySQL bằng MySQLi và PDO
Trong PHP, bạn có thể dễ dàng thực hiện kết nối đến máy chủ MySQL bằng hàm mysqli_connect().
Tất cả giao tiếp giữa PHP và máy chủ cơ sở dữ liệu MySQL diễn ra thông qua kết nối này.
Dưới đây là các cú pháp cơ bản để kết nối với MySQL bằng các phần mở rộng MySQLi và PDO:
Cách 1: Cú pháp kết nối MySQL sử dụng MySQLi hướng thủ tục
$link = mysqli_connect("hostname", "username", "password", "database");
Ví dụ sử dụng MySQLi hướng thủ tục để kết nối MySQL
<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "");
// Kiểm tra kết nối
if($link === false){
die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
// In thông tin Host
echo "Kết nối thành công. Host: " . mysqli_get_host_info($link);
?>
Cách 2: Cú pháp kết nối MySQL sử dụng MySQLi hướng đối tượng
$mysqli = new mysqli("hostname", "username", "password", "database");
Ví dụ sử dụng MySQLi hướng đối tượng để kết nối MySQL
<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$mysqli = new mysqli("localhost", "root", "", "demo");
// Kiểm tra kết nối
if($mysqli === false){
die("ERROR: Không thể kết nối. " . $mysqli->connect_error);
}
// In thông tin Host
echo "Kết nối thành công. Host: " . $mysqli->host_info;
?>
Cách 3: Cú pháp kết nối MySQL sử dụng PDO
$pdo = new PDO("mysql:host=hostname;dbname=database", "username", "password");
Ví dụ sử dụng PDO để kết nối MySQL
<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
try{
$pdo = new PDO("mysql:host=localhost", "root", "");
// Thiết lập PHP erorr thành Ngoại lệ
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// In thông tin Host
echo "Kết nối thành công. Host: " .
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
die("ERROR: Không thể kết nối. " . $e->getMessage());
}
?>
Tham số hostname trong cú pháp trên chỉ định tên máy chủ (ví dụ: localhost) hoặc địa chỉ IP của máy chủ MySQL, trong khi tham số username và password chỉ định thông tin đăng nhập để truy cập máy chủ MySQL và tham số database, nếu được cung cấp sẽ chỉ định sơ sở dữ liệu MySQL mặc định được sử dụng khi thực hiện các truy vấn.
Lưu ý 2: Tên user mặc định cho máy chủ cơ sở dữ liệu MySQL là root và không có mật khẩu. Tuy nhiên, để ngăn chặn cơ sở dữ liệu của bạn khỏi sự xâm nhập và truy cập trái phép, bạn nên đặt mật khẩu cho tài khoản MySQL.
Mẹo: Thiế lập thuộc tính PDO::ATTR_ERRMODE thành PDO::ERRMODE_EXCEPTION để yêu cầu PDO ném ngoại lệ bất cứ khi nào xảy ra lỗi cơ sở dữ liệu.
Hướng dẫn đóng kết nối máy chủ cơ sở dữ liệu MySQL theo 3 cách
1. Đóng kết nối MySQL sử dụng MySQLi hướng thủ tục
<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$link = mysqli_connect("localhost", "root", "");
// Kiểm tra kết nối
if($link === false){
die("ERROR: Không thể kết nối. " . mysqli_connect_error());
}
// In thông tin Host
echo "Kết nối thành công. Host: " . mysqli_get_host_info($link);
// Đóng kết nối
mysqli_close($link);
?>
2. Đóng kết nối MySQL sử dụng MySQLi hướng đối tượng
<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
$mysqli = new mysqli("localhost", "root", "", "demo");
// Kiểm tra kết nối
if($mysqli === false){
die("ERROR: Không thể kết nối. " . $mysqli->connect_error);
}
// In thông tin Host
echo "Kết nối thành công. Host: " . $mysqli->host_info;
// Đóng kết nối
$mysqli->close();
?>
3. Đóng kết nối MySQL sử dụng PDO
<?php
/* Cố gắng kết nối máy chủ MySQL. Giả sử bạn đang chạy MySQL
Máy chủ có cài đặt mặc định (user là 'root' và không có mật khẩu) */
try{
$pdo = new PDO("mysql:host=localhost", "root", "");
// Thiết lập PHP erorr thành Ngoại lệ
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// In thông tin Host
echo "Kết nối thành công. Host: " .
$pdo->getAttribute(constant("PDO::ATTR_CONNECTION_STATUS"));
} catch(PDOException $e){
die("ERROR: Không thể kết nối. " . $e->getMessage());
}
// Đóng kết nối
unset($pdo);
?>
Bạn đã biết kết nối MySQL trong PHP chưa?
Trên đây là 3 cách kết nối MySQL trong PHP với MySQLi và PDO.
Bất cứ khi nào sử dụng CSDL MySQL thì bạn đều cần mở một kết nối tới máy chủ MySQl. Sau khi sử dụng xong thì cần phải đóng kết nối để đảm bảo an toàn, tăng hiệu năng cho website của bạn.
Hãy luyện tập và ghi nhớ 3 Cách kết nối cơ sở dữ liệu MySQL này nhé.