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
$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
$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
$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
$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
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
$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();
}
?>
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.