01/10/2018, 16:54

Bai 01: Kết nối PHP và MySQL

Kể từ PHP phiên bản 5.0 trở đi bạn có thể sử dụng MySQL bằng cách sử dụng hai thư viện chính sau: MySQLi (i là chữ viết tắt của improved) PDO (PHP Data Objects) Các phiên bản trước của PHP sử dụng thư viện là MySQL. Tuy nhiên, bộ thư viện này sẽ bị gỡ bỏ kẻ từ phiên bản PHP 5.3 trở đi. ...

Kể từ PHP phiên bản 5.0 trở đi bạn có thể sử dụng MySQL bằng cách sử dụng hai thư viện chính sau:

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

Các phiên bản trước của PHP sử dụng thư viện là MySQL. Tuy nhiên, bộ thư viện này sẽ bị gỡ bỏ kẻ từ phiên bản PHP 5.3 trở đi.

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

Đó là một câu hỏi khá hay. Nhưng cá nhân tôi nghĩ nó phụ thuộc vào vùng tiếp cận của bạn, hoặc bạn thích sử dụng cái nào vì thực chất mỗi thư viện này đều có nhưng ưu điểm của riêng. Cả hai MySQLi và PDO đều có lợi thế

  • PDO sẽ làm việc trên 12 hệ quản trị cơ sở dữ liệu khác nhau, Trong khi đó MySQLi sẽ chỉ làm việc với cơ sở dữ liệu MySQL.
  • Nếu bạn phải chuyển đổi dự án của bạn để sử dụng cơ sở dữ liệu khác, Bạn nên sử dụng PDO khi đó đơn giản bạn chỉ cần thay đổi chuỗi kết nối và một vài truy vấn. Với MySQLi, bạn sẽ cần phải viết lại toàn bộ các câu lệnh.
  • Cả hai đều là hướng đối tượng, nhưng MySQLi cũng cung cấp một danh sách các hàm thủ tục(API).
  • Cả hai đều hỗ trợ Prepared. Đây là vấn đề quan trọng để bảo vệ ứng dụng của bạn khỏi SQL injection

Để có thể làm việc được với MySQLi hay PDO thì điều kiện bắt buộc là bạn phải cài đặt hoặc active các thư viện này. Hiện này hầu hết các Web hosting, VPS hay Sever đều đã cài đặt sẵn các thư viện này và bạn có thể sẻ phải active nó nên trước khi sử dụng nó.

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

Trước khi có thể truy xuất dữ liệu trong MySQL thì việc đầu tiên bạn cần làm là mở một kết nói tới Hệ quản trị CSDL này. 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).

Thì hiện tại mình đang dùng Xamp và có thông tin kết nối như sau.

  • host: localhost
  • username: root
  • password:

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 tới MySQL sử dụng MySQLi Object-Oriented

<?php
$host = "localhost";
$username = "root";
$password = "";

// Khởi tạo đối tượng mysqli
$dbconn = new mysqli($host , $username, $password);

// Kiểm tra kết nối thành công [OR] thất bại
// Nếu kết nối thất bại thì đưa ra thông báo lỗi
if ($dbconn ->connect_error) {
    die("Kết nối thất bại: " . $dbconn->connect_error);
} 
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

<?php
$host= "localhost";
$username = "root";
$password = "";

// Tạo một kết nối
$dbconn = mysqli_connect($host, $username, $password);

// Kiểm tra kết nối thành công [OR] thất bại
// Nếu thất bại thì thông báo lỗi
if (!$dbconn ) {
    die("Kết nối thất bại: " . mysqli_connect_error());
}
echo "Kết nối thành công";
?>

Kết nối MySQL bằng PDO

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

Lưu ý: 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ếu không sẽ bị lỗi.

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

Kết nối sẽ tự động đóng khi script kết thúc. Mỗi thư viện sẽ có một cách ngắt kết nối khác nhau để ngắt một kết nối trước đó.

Đối với MySQLi Object-Oriented.

$dbconn->close();

Đối với MySQLi Procedural.

mysqli_close($dbconn);

Đối với PDO.

$dbconn = null;

4. Tổng 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. Nếu có thể mình sẽ có một bài chia sẻ về thư việ ADODB một thư viện mã nguồn mở cho phép bạn kết nối tới mọi hệ quản trị CSDL.

    Vũ Văn Thanh

    12 chủ đề

    2597 bài viết

    Cùng chủ đề
    0