Kết nối cơ sở dữ liệu thông qua PDO trong PHP

Hãy thực hiện kết nối với CSDL thông qua PDO. Trước hết hãy ghi thông tin truy cập vào các biến:

php<?php
  $host = 'localhost'; // tên máy chủ (thông thường luôn như vậy)
  $db = 'test';        // tên CSDL
  $user = 'root';      // tên đăng nhập vào CSDL
  $pass = 'root';      // mật khẩu đăng nhập vào CSDL
?>

Bây giờ chúng ta cần tạo một chuỗi theo định dạng đặc biệt. Trong chuỗi này chúng ta phải chỉ định loại CSDL sử dụng (thông thường là 'mysql'), tên máy chủ và tên CSDL:

php<?php
  $dsn = "mysql:host=$host; dbname=$db; charset=utf8";
?>

Sau đó tạo mảng các tùy chọn PDO, mà chúng ta sẽ sử dụng trong quá trình làm việc (tạm thời đừng đi sâu vào):

php<?php
  $opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
  ];
?>

Bây giờ chúng ta có thể thực hiện kết nối đến cơ sở dữ liệu, sử dụng các biến đã khai báo ở trên:

php<?php
  $pdo = new PDO($dsn, $user, $pass, $opt);
?>

Đoạn mã trên sẽ hoặc là thực hiện kết nối đến cơ sở dữ liệu, hoặc là ném ra một ngoại lệ. Vì vậy, đúng hơn là nên bọc việc kết nối trong cấu trúc try-catch:

php<?php
  try {
    $pdo = new PDO($dsn, $user, $pass, $opt);
    echo 'DB is connected';
  } catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>

Mã đầy đủ sẽ trông như thế này:

php<?php
  $host = 'localhost';
  $db = 'test';
  $user = ''; // tên đăng nhập vào CSDL
  $pass = ''; // mật khẩu đăng nhập vào CSDL
  $charset = 'utf8';
  
  $dsn = "mysql:host=$host; dbname=$db; charset=$charset";
  
  $opt = [
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
    PDO::ATTR_EMULATE_PREPARES => false,
  ];
  
  try {
    $pdo = new PDO($dsn, $user, $pass, $opt);
    echo 'DB is connected';
  } catch(PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
  }
?>
Задание 1

Hãy thiết lập kết nối với CSDL của bạn bằng cách được mô tả trong bài học.