Để 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 thiết lập kết nối giữa cơ sở dữ liệu và tập lệnh PHP
Trong hướng dẫn này, hãy tìm hiểu cách sử dụng Tiện ích mở rộng MySQLi và Đối tượng dữ liệu PHP để kết nối với MySQL. Các hàm mysql_ kế thừa truyền thống không được dùng 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 tiên quyết
- Đặc quyền CREATE đặc biệt
- Cơ sở dữ liệu MySQL
- Tiện ích mở rộng MySQLi hoặc PDO
2 cách để kết nối với cơ sở dữ liệu MySQL bằng PHP
Có hai cách phổ biến để kết nối với cơ sở dữ liệu MySQL bằng PHP
- Với phần mở rộng MySQLi của PHP
- Với đối tượng dữ liệu PHP [PDO]
Hướng dẫn này cũng bao gồm các giải thích về thông tin đăng nhập được sử dụng trong tập lệnh PHP và các lỗi tiềm ẩn mà bạn có thể gặp phải khi sử dụng MySQLi và PDO
lựa chọn 1. Kết nối với MySQL với tiện ích mở rộng được cải thiện của MySQL
MySQLi là một phần mở rộng chỉ hỗ trợ cơ sở dữ liệu MySQL. Nó cho phép truy cập vào các chức năng mới được tìm thấy trong các 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 chuẩn bị phía máy chủ, nhưng không hỗ trợ các câu lệnh chuẩn bị phía máy khách
Tiện ích mở rộng MySQLi được bao gồm phiên bản PHP 5 trở lên
Tập lệnh PHP để kết nối với cơ sở dữ liệu MySQL bằng cách sử dụng phương pháp thủ tục MySQLi như sau
connect_error] {
die["Connection failed: " . $conn->connect_error];
}
echo “Connected successfully”;
mysqli_close[$conn];
?>
Giải thích thông tin xác thực
Phần đầu tiên của tập lệnh là bốn biến [tên máy chủ, cơ sở dữ liệu, tên người dùng và mật khẩu] 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 PHP chính mysqli_connect[]. Nó thiết lập kết nối với cơ sở dữ liệu được chỉ định
Sau đây là một “câu lệnh if. ” Đây là một phần của mã cho biết kết nối đã được thiết lập hay chưa. Khi kết nối không thành công, nó đưa ra thông báo Kết nối không thành công. Hàm chết in thông báo rồi thoát ra khỏi tập lệnh
Nếu kết nối thành công, nó sẽ hiển thị “Đã kết nối thành công. ”
Khi tập lệnh kết thúc, kết nối với cơ sở dữ liệu cũng đóng lại. Nếu bạn muốn kết thúc mã thủ công, hãy sử dụng hàm mysqli_close
Lựa chọn 2. Kết nối với MySQL bằng PDO
Đối tượng dữ liệu PHP [PDO] là một tiện ích mở rộng đóng vai trò là giao diện để kết nối với cơ sở dữ liệu. Không giống như MySQLi, nó có thể thực hiện bất kỳ chức năng cơ sở dữ liệu nào và không giới hạn đối với MySQL. Nó cho phép linh hoạt giữa các cơ sở dữ liệu và tổng quát hơn MySQL. PDO hỗ trợ cả câu lệnh chuẩn bị phía máy chủ và phía máy khách
Ghi chú. PDO sẽ không chạy trên các phiên bản PHP cũ hơn 5. 0 và được bao gồm trong PHP 5. 1
Mã PHP để kết nối với cơ sở dữ liệu MySQL thông qua phần mở rộng PDO là
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 tôi có năm biến [tên máy chủ, cơ sở dữ liệu, tên người dùng, mật khẩu và bộ ký tự] 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
Tên máy chủ sẽ là localhost. Nếu được kết nối với máy chủ trực tuyến, hãy nhập tên máy chủ của máy chủ đó
Bộ ký tự biến cho cơ sở dữ liệu mã hóa mà nó sẽ nhận và gửi dữ liệu. Tiêu chuẩn được khuyến nghị là utf8mb4
Thử và bắt các khối
Tài sản tuyệt vời của PDO là nó có một lớp ngoại lệ để giải quyết mọi vấn đề tiềm ẩn trong các truy vấn cơ sở dữ liệu. Nó giải quyết những vấn đề này bằng cách kết hợp các khối thử và bắt
Nếu xảy ra sự cố trong khi cố gắng kết nối, nó sẽ ngừng chạy và cố gắng nắm bắt cũng như giải quyết sự cố. Khối bắt 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 khối thử và bắt là DSN, viết tắt của tên nguồn dữ liệu [cơ sở]. Nó rất quan trọng vì nó xác định loại và tên của cơ sở dữ liệu, 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 cơ sở dữ liệu MySQL. Tuy nhiên, PDO hỗ trợ nhiều loại cơ sở dữ liệu khác nhau. Nếu bạn có một cơ sở dữ liệu khác, hãy thay thế phần cú pháp đó [mysql] bằng cơ sở dữ liệu 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 cơ sở dữ liệu. Nó có ba tham số
- Tên nguồn dữ liệu [dsn]
- Tên người dùng cho cơ sở dữ liệu của bạn
- Mật khẩu cho cơ sở dữ liệu của bạn
Sau đây là phương thức setAttribute thêm hai tham số vào PDO
- PDO. ATTR_ERRMODE
- PDO. ERRMODE_EXCEPTION
Phương pháp này hướng dẫn PDO chạy một ngoại lệ trong trường hợp truy vấn không thành công
Thêm tiếng vang “Connection Okay. ” để xác nhận kết nối được thiết lập
Trả về biến PDO để kết nối với cơ sở dữ liệu
Sau khi trả về biến PDO, hãy xác định PDOException trong khối catch bằng cách hướng dẫn nó hiển thị thông báo khi kết nối không thành công
Lỗi tiềm ẩn với MySQLi và PDO
Mật khẩu không đúng
Mật khẩu trong mã PHP cần tương ứng với mật khẩu trong cơ sở dữ liệu. Nếu cả hai không khớp, không thể thiết lập kết nối với cơ sở dữ liệu. 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 cơ sở dữ liệu để đảm bảo mật khẩu là chính xác
- Đảm bảo có một người dùng được gán cho cơ sở dữ liệu
Không thể kết nối với máy chủ MySQL
PHP có thể không kết nối được với máy chủ MySQL nếu tên máy chủ không được nhận dạng. Đảm bảo rằng tên máy chủ được đặt thành localhost
Trong trường hợp có các lỗi khác, hãy đảm bảo tham khảo tệp error_log để được trợ giúp khi cố gắng giải quyết mọi sự cố. Tệp nằm trong cùng thư mục nơi tập lệnh đang chạy
Sự kết luận
Hướng dẫn này nêu chi tiết hai cách để kết nối với cơ sở dữ liệu MySQL bằng PHP
Cả MySQLi và PDO đều có ưu điểm của chúng. Tuy nhiên, hãy nhớ rằng MySQLi chỉ được sử dụng cho cơ sở dữ liệu MySQL. Do đó, nếu bạn muốn thay đổi sang cơ sở dữ liệu khác, bạn sẽ phải viết lại toàn bộ mã. Mặt khác, PDO hoạt động với 12 cơ sở dữ liệu khác nhau, giúp việc di chuyển dễ dàng hơn nhiều