Các cách kết nối PHP và MySQL

Các cách kết nối PHP và MySQL là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Các cách kết nối PHP và MySQL sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và PHP nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

Kể từ phiên bản PHP5 trở đi chúng ta có thể kết nối với MySQL bằng cách sử dụng hai thư viện chính đó là:

  • MySQLi (i là chữ viết tắt của improved)
  • PDO (PHP Data Objects)

Đối với những phiên bản cũ thì có một bộ thư viện tên là MySQL, tuy nhiên bộ thư viện này sẽ bị gỡ bỏ khỏi PHP kể từ Version 5.3, vì vậy bạn không nên sử dụng nó.

Câu hỏi đặt ra bây giờ là giữa hai bộ thư viện MySQLi và PDO thì nên sử dụng cái nào?

1. Nên sử dụng MySQLi hay PDO

Có lẽ câu trả lời hay nhất đó là bạn thích sử dụng cái nào thì tùy vào sở thích của bạn, mỗi cái đều có những ưu điểm riêng của nó. Tuy nhiên người ta vẫn đưa ra một số đánh giá để bạn quyết định chọn lựa.

Các cách kết nối PHP và MySQL

Thứ nhất: Với MySQLi thì chỉ có thể kết nối và xử lý với MySQL, còn PDO có thể kết nối với 12 hệ quản trị CSDL khác nhau. Như vậy nếu ứng dụng của bạn có kết nối với nhiều hệ quản trị CSDL thì bạn nên sử dụng PDO, còn chỉ một mình MySQL thôi thì có thể chọn MySQLi.

Thứ hai: Giả sử nếu dự án của bạn đang viết ở MySQL, nhưng một ngày nào đó bạn chuyển toàn bộ data sang SQL Server thì lúc này PDO lại có lợi thế hơn bởi vì bạn chỉ cần thay chuỗi kết nối là được. Nhưng với MySQLi thì ban sẽ phải viết lại toàn bộ dự án.

Thứ ba: Cả hai thư viện đều hỗ trợ Prepared Statements, đây là vấn đề quan trọng để tránh lỗi SQL Injection.

Thứ tư:Cả hai thư viện đều hỗ trợ object-oriented (hướng đối tượng), nhưng đối với MySQLi thì hỗ trợ thêm các hàm thủ tục (Procedural ).

Dựa vào bốn nhận xét trên rõ ràng ưu thế sẽ thuộc về PDO phải không các bạn :D.

2. Kết nối PHP với MySQL

Vì PDO và MySQLi là các thư viện riêng nên muốn sử dụng bạn phải cài đặt nó vào bộ thư viện của PHP. Nhưng bạn đừng lo ngại vì hầu hết các Hosting, VPS hay Server đều đã cài đặt săn cho bạn, bạn chỉ việc sử dụng mà thôi.

Như ở bài mối liên hệ giữa PHP và MySQL mình có nói muốn thực thi câu truy vấn MySQL bằng PHP thì bạn phải thực hiện kết nối trước, sau đó bạn muốn làm gì thì làm. Cách kết nối như thế nào thì phụ thuộc vào thư viện bạn chọn, tuy nhiên trong bài mình sẽ trình bày ba cách đó là kết nối bằng PDO, MySQLi (object-oriented) và MySQLi (Procedural ).

Trong các ví dụ dưới đây mình sử dụng thông tin kết nối như sau:

  • host: localhost
  • username: root
  • password: vertrigo

Trong đó:

  • host: là địa chỉ cài đặt MySQL, thông thường là localhost
  • username: là tên đăng nhập vào MySQL
  • password: mật khẩu đăng nhập

Kết nối MySQL bằng MySQLi Object-Oriented:

// Tạo đối tượng mysqli
$conn = new mysqli('localhost', 'root', 'vertrigo');
 
// Kiểm tra kết nối thành công hay thất bại
// nếu thất bại thì thông báo lỗi
if ($conn->connect_error) {
    die("Kết nối thất bại: " . $conn->connect_error);
} 
 
// Thông báo kết nối thành công
echo "Kết nối thành công"; 

Lưu ý: Các phiên bản MySQL trước Version 5.3 sẽ phải sử dụng đoạn code sau để kiểm tra kết nối thành công hay thất bại.

if (mysqli_connect_error()) {
    die("Kết nối thất bại: " . mysqli_connect_error());
} 

Kết nối MySQL bằng MySQLi Procedural:

// Thực hiện kết nối
$conn = mysqli_connect('localhost', 'root', 'vertrigo');
 
// Kiểm tra kết nối thành công hay thất bại
// nếu thất bại thì thông báo lỗi
if (!$conn) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}
 
// Thông báo kết nối thành công
echo "Kết nối thành công"; 

Kết nối MySQL bằng PDO:

// Nhánh kết nối thành công
try {
    // Kết nối
    $conn = new PDO("mysql:host=localhost;dbname=DBName", 'root', 'vertrigo');
     
    // Thiết lập chế độ lỗi
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    // Thông báo thành công
    echo "Kết nối thành công";
} 
// Nhánh kết nối thất bại
catch (PDOException $e) {
    echo "Kết nối thất bại: " . $e->getMessage();
} 

Bạn để ý trong chuỗi kết nối mình có chọn database cho nó là dbname=DBName, đối với PDO ban phải chọn database để kết nối nữa nếu không sẽ bị lỗi.

3. Ngắt kết nối PHP với MySQL

Mỗi thư viện sẽ có một cách ngắt kết nối khác nhau.

Đối với MySQLi Object-Oriented:

$conn->close();

Đối với MySQLi Procedural:

mysqli_close($conn);

Đối với PDO:

$conn = null;

4. Lời kết

Như vậy là mình đã giới thiệu xong hai thư viện sử dụng để kết nối PHP với MySQL nhiều nhất đó là PDO và MySQLi, cả hai thư viện đều có những ưu điểm và nhược điểm nên việc chọn lựa thư viện nào để sử dụng thì phụ thuộc vào sở thích của bạn và bốn yếu tố mà mình đã trình bày ở trên.

Bài này mình dừng ở đây, bài tiếp theo chúng ta sẽ học cách tạo MySQL Table bằng lệnh PHP.

Hy vọng với bài viết về Các cách kết nối PHP và MySQL đã giải đáp giúp bạn phần nào về kiến thức lập trình PHP. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!