NỘI DUNG

Hosting tốc độ cao Vietnix - tốc độ tải trang trung bình dưới 1 giây
VPS siêu tốc Vietnix - trải nghiệm mượt mà, ổn định
21/06/2021
Lượt xem

Kết nối cơ sở dữ liệu MySQL với PHP

21/06/2021
8 phút đọc
Lượt xem

Đánh giá

5/5 - (113 bình chọn)

Để truy cập và thêm nội dung vào cơ sở dữ liệu MySQL, trước tiên bạn phải kết nối MySQL với PHP. Trong hướng dẫn này, hãy tìm hiểu cách sử dụng MySQLi ExtensionPHP Data Objects để kết nối với MySQL. Các hàm mysql_ truyền thống không dùng được nữa và chúng tôi sẽ không đề cập đến chúng trong hướng dẫn này.

kết nối mysql với php
Hướng dẫn kết nối MySQL với PHP với 2 cách

Điều kiện cần có:

2 cách kết nối MySQL với PHP

Có hai cách phổ biến để kết nối MySQL với PHP:

  1. Với phần mở rộng  MySQLi Extension của PHP.
  2. Với PHP Data Objects (PDO)

Hướng dẫn này cũng bao gồm các giải thích về thông tin xác thực được sử dụng trong PHP script và các lỗi tiềm ẩn mà bạn có thể gặp khi sử dụng MySQLi và PDO.

Kết nối MySQL với PHP bằng MySQLi Extension

MySQLi là một extension chỉ hỗ trợ cơ sở dữ liệu MySQL. Nó cho phép truy cập vào các chức năng có trong hệ thống MySQL (phiên bản 4.1 trở lên), cung cấp cả giao diện thủ tục và hướng đối tượng. Nó hỗ trợ các câu lệnh phía server, nhưng không hỗ trợ từ phía máy client.

MySQLi extension được bao gồm cả phiên bản PHP 5 và các phiên bản mới hơn.

PHP script để kết nối với cơ sở dữ liệu MySQL bằng cách tiếp cận MySQLi như sau:

<?php
$servername = "localhost";
$database = "database";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $database);

// Check connection

if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo “Connected successfully”;
mysqli_close($conn);
?>

Giải thích về thông tin xác thực

Phần đầu tiên của script là bốn biến (server name, database, username và password) và các giá trị tương ứng của chúng. Các giá trị này phải tương ứng với chi tiết kết nối của bạn.

kết nối php với mysql
4 biến của script

Tiếp theo là hàm chính của PHP mysqli_connect (). Nó thiết lập một kết nối với database được chỉ định.

php connect mysql
Hàm mysql_connect

Sau đây là câu lệnh “if”. Đây là một phần của code cho biết liệu kết nối đã được thiết lập hay chưa. Khi kết nối không thành công, nó sẽ đưa ra thông báo Connection failed.. Hàm die sẽ in thông báo và sau đó thoát ra khỏi script.

kết nối csdl voi php
Lệnh if và lệnh die

Nếu kết nối thành công, nó sẽ hiển thị “Connected successfully.”.

php kết nối mysql
Thông báo kết nối thành công

Khi script kết thúc, kết nối với database cũng đóng. Nếu bạn muốn kết thúc code theo cách thủ công, hãy sử dụng hàm mysqli_close.

cách kết nối mysql với php
Sử dụng mysqli_close để kết thúc kết nối

Kết nối MySQL với PHP bằng PDO

PHP Data Objects (PDO) là một extension như một interface để kết nối với database. Không giống như MySQLi, nó có thể thực hiện bất kỳ chức năng database nào và không giới hạn ở MySQL. Nó cho phép sự linh hoạt giữa các database và tổng quát hơn MySQL. PDO hỗ trợ các câu lệnh từ phía server và cả client.

Lưu ý: Kết nối MySQL với PHP bằng PDO sẽ không thành công nếu phiên bản PHP cũ hơn 5.0 (bao gồm cả PHP 5.1).

Kết nối MySQL với PHP thông qua PDO như sau:

<?php

$servername = "localhost";
$database = "database";
$username = "username";
$password = "password";
$charset = "utf8mb4";

try {
  $dsn = "mysql:host=$servername;dbname=$database;charset=$charset";
  $pdo = new PDO($dsn, $username, $password);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

  echo “Connection Okay”;
  return $pdo
}
catch (PDOException $e) {
  echo “Connection failed: ”. $e->getMessage();
}
?>

Cú pháp thông tin xác thực

Đầu tiên, chúng ta có năm biến (server name, database, username, password, và charset) và các giá trị của chúng. Các giá trị này phải tương ứng với chi tiết kết nối của bạn.

Server name sẽ là localhost. Nếu được kết nối với một server online, hãy nhập tên server đó vào server name.

Biến “charset” cho database biết mã hóa mà nó sẽ nhận và gửi dữ liệu. Tiêu chuẩn được đề xuất là utf8mb4.

connect database php
Thêm biến charset

Try và Catch

Tài sản lớn của PDO là có một lớp ngoại lệ để xử lý mọi vấn đề tiểm ẩn trong các truy vấn database. Nó giải quyết những vấn đề này bằng trycatch.

Nếu sự cố phát sinh trong khi cố gắng kết nối, nó sẽ ngừng chạy và cố gắng bắt và giải quyết sự cố. Các block try có thể được đặt để hiển thị thông báo lỗi hoặc chạy mã thay thế.

kết nối cơ sở dữ liệu mysql với php
Giải quyết vấn đề tìm ẩn bằng try và catch

Tham số đầu tiên trong block try và catch là DSN, viết tắt của Data(base) Source Name. Nó rất quan trọng vì nó xác định loại và tên của database, cùng với bất kỳ thông tin bổ sung nào khác.

Trong ví dụ này, chúng tôi đang sử dụng MySQL database. Tuy nhiên, PDO hỗ trợ nhiều loại database khác nhau. Nếu bạn có một database khác, hãy thay thế phần cú pháp đó (mysql) bằng database bạn đang sử dụng.

hướng dẫn cahcs kết nối csdl mysql với php
Thay thế mysql bằng database bạn đang sử dụng

Tiếp theo là biến PDO. Biến này sẽ thiết lập kết nối với database. Nó có ba tham số:

  1. Data Source Name (DSN).
  2. Username cho database của bạn.
  3. Password cho database của bạn.
tạo username và password pdo
PDO gồm 3 tham số username, password và DSN

Sau đây là phương thức setAttribute thêm hai tham số vào PDO:

  1. PDO::ATTR_ERRMODE
  2. PDO::MODERATOR_EXCEPTION

Phương pháp này hướng dẫn PDO chạy trong trường hợp truy vấn không thành công.

chạy pdo
setAttribute chạy trong truy vấn không thành công

Thêm echo “Connection Okay.” để xác nhận kết nối đã được thiết lập.

kết nối thành công mysql với php
Xác định kết nối được thiết lập

Trả về biến PDO để được kết nối với database.

kết nối database
Trả về biến PDO

Sau khi trả về biến PDO, hãy xác định PDOException trong block catch bằng cách hướng nó hiển thị thông báo kết nối không thành công.

connection fails
Hướng đó hiển thị thông báo “Connection failed”

Các lỗi tiềm ẩn khi kết nối MySQL với PHP bằng MySQLi và PDO

Password không đúng

Password trong PHP code cần phải tương ứng với password trong database. Nếu cả hai không khớp, kết nối với database không thể được thiếp lập. Bạn sẽ nhận được thông báo lỗi cho biết kết nối không thành công.

Phương pháp khả thi:

  1. Kiểm tra chi tiết database để đảm bảo password chính xác.
  2. Đảm bảo người dùng được chỉ định cho database.

Không thể kết nối MySQL Server

PHP có thể không kết nối được với MySQL server nếu tên server không được nhận dạng. Đảm bảo rằng tên server được đặt thành localhost.

Trong trường hợp xảy ra lỗi khác, hãy nhớ thêm file “error_log” để trợ giúp khi cố gắng giải quyết bất kỳ vấn đề nào. File nằm trong cùng một folder nơi script đang chạy.

Tổng kết

Hướng dẫn này trình bày chi tiết cách kết nối MySQL với PHP bằng hai công cụ đó là MySQLiPDO để giúp bạn có thể hiểu rõ hơn về chúng.

Cả MySQLi và PDO đều có điểm mạnh của chúng. Tuy nhiên, hãy nhớ rằng MySQLi chỉ sử dụng cho database MySQL. Do đó, nếu bạn muốn thay đổi sang database khác, bạn sẽ phải viết lại toàn bộ code. Mặt khác, PDO hoạt động với 12 database khác nhau, giúp việc di chuyển dễ dàng hơn nhiều.

Hy vọng bài viết này sẽ giúp ích cho bạn. Chúc bạn may mắn! Đừng quên theo dõi Vietnix để cập nhật kiến thức và tài liệu bổ ích khác.

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Chọn chủ đề :

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

Tăng tốc độ website - Nâng tầm giá trị thương hiệu

Banner group
Tăng tốc tải trang

95 điểm

Nâng cao trải nghiệm người dùng

Tăng 8% tỷ lệ chuyển đổi

Thúc đẩy SEO, Google Ads hiệu quả

Tăng tốc ngay

SẢN PHẨM NỔI BẬT

Black Friday Hosting & VPS

Chương trình bắt đầu sau

Giảm giá 40% hosting VPS

50 coupon mỗi ngày

Gia hạn giá không đổi

NHẬN DEAL NGAY
Pattern

7 NGÀY DÙNG THỬ HOSTING

NẮM BẮT CƠ HỘI, THÀNH CÔNG DẪN LỐI

Cùng trải nghiệm dịch vụ hosting tốc độ cao được hơn 100,000 khách hàng sử dụng

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG