Để 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 Extension và PHP 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.
Điều kiện cần có:
- CREATE đặc quyền.
- Cơ sở dữ liệu MySQL.
- Extension MySQLi hoặc PDO.
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:
- Với phần mở rộng MySQLi Extension của PHP.
- 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.
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.
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.
Nếu kết nối thành công, nó sẽ hiển thị “Connected successfully.”.
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.
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.
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 try và catch.
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ế.
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.
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ố:
- Data Source Name (DSN).
- Username cho database của bạn.
- Password cho database của bạn.
Sau đây là phương thức setAttribute thêm hai tham số vào PDO:
- PDO::ATTR_ERRMODE
- 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.
Thêm echo “Connection Okay.” để xác nhận kết nối đã được thiết lập.
Trả về biến PDO để được kết nối với database.
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.
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:
- Kiểm tra chi tiết database để đảm bảo password chính xác.
- Đả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à MySQLi và PDO để 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.