Lỗi nghiêm trọng: lỗi chưa được phát hiện: không tìm thấy lớp mysqli_connect
Trong bài viết này chúng ta sẽ cùng nhau tìm hiểu về lỗi không bắt được “Uncaught error. Gọi hàm không xác định mysql_connect()” Show
Lỗi này xảy ra khi chúng tôi cố gắng sử dụng các hàm “mysql_connect()” của php5 trong php7 PHP Lỗi nghiêm trọng. Lỗi chưa xử lý. Gọi đến hàm không xác định mysql_connect() lỗi được tăng vì các hàm mysql_* đã bị xóa hoàn toàn khỏi PHP 7, trước đây nó không được dùng trong PHP 5. 5, nhưng bây giờ nó đã bị xóa hoàn toàn Chức năng MySQL cũ hơn bị xóa vì những lý do sau
Cách khắc phục lỗi Undefined Function Mysql_connect()Có bốn phương pháp để sửa lỗi hàm Mysql_connect() không xác định
1. Sử dụng MySQLi hoặc PDOmysqli_connect() Thay vì sử dụng “mysql_connect()” chúng ta nên sử dụng “mysqli_connect()” trong php7 để tránh lỗi này Ví dụ. $mysql = new mysqli("localhost","root","password",''DB_name"); PDO (đối tượng cơ sở dữ liệu php) Ví dụ. $pdo = PDO mới('mysql. host=localhost;dbname=database_name ', 'tên người dùng', 'mật khẩu'); // pdo yêu cầu cơ sở dữ liệu hợp lệ để thiết lập kết nối. Nếu cơ sở dữ liệu không được chỉ định thì nó sẽ đưa ra một ngoại lệ 2. Kết nối với Mysql với đối tượng Pdo khá đơn giản
3. Kết nối với MySQL bằng đối tượng kết nối MySqli
4. Quay trở lại PHP 5 cũ hơn, cập nhật mã của bạn lên mysqli hoặc PDO rồi nâng cấp lên PHP7Thực hành tốt nhất Sử dụng trình bao bọc MySQLi và trình ánh xạ đối tượng với các câu lệnh đã chuẩn bịVí dụ. Người dùng PHP-MySQLi-Database-Class https. //github. com/ThingEngineer/PHP-MySQLi-Database-Class Bằng cách sử dụng MySQLi với câu lệnh chuẩn bị sẽ bảo mật kết nối cơ sở dữ liệu của bạn & trong tương lai, nếu cần nâng cấp Cơ sở dữ liệu của bạn lên một số phiên bản khác, bạn sẽ không phải cập nhật tất cả chuỗi kết nối mysql của mình trong tất cả các trang Tôi đã từng thấy một cách nghiêm túc khi kết nối cơ sở dữ liệu PHP 3 hoạt động hoàn toàn tốt trong nhiều tháng hoặc nhiều năm, rồi đột nhiên nó ngừng hoạt động. Khi bật báo cáo lỗi PHP hoặc khi kiểm tra lỗi trong tệp error_log trong cPanel, bạn sẽ thấy lỗi bên dướiPHP Lỗi nghiêm trọng. Lỗi chưa xử lý. Gọi hàm không xác định mysqli_connect() trong /home/username/public_html/ Điều này có thể tạo ra sự bất tiện lớn và ảnh hưởng tiêu cực đến trang web dựa trên cơ sở dữ liệu của bạn, đặc biệt nếu bạn không truy cập trang web thường xuyên Như bạn có thể thấy từ lỗi trên, PHP không nhận ra hàm 3. Điều này thường xảy ra khi một số thay đổi được thực hiện trên máy chủ ảnh hưởng đến tiện ích mở rộng mysqliCó 2 cách kết nối PHP với cơ sở dữ liệu MySQL
Các phiên bản trước của PHP (trước phiên bản 5) đã sử dụng tiện ích mở rộng MySQL không được dùng nữa vào năm 2012 và được thay thế bằng tiện ích mở rộng MySQLi. Chữ "i" trong MySQLi là viết tắt của cải tiến Tiện ích mở rộng MySQLi hỗ trợ cả hai cách kết nối theo thủ tục và hướng đối tượng với cơ sở dữ liệu cách thủ tục
Cách hướng đối tượng
Tất cả những gì bạn phải làm là thay thế các giá trị trong dấu ngoặc kép ở trên bằng thông tin đăng nhập cơ sở dữ liệu thực của bạn, trong đó tên máy chủ trong hầu hết các trường hợp sẽ là "Localhost", mặc dù tên này có thể khác trong một số trường hợp. "Tên người dùng" là tên người dùng của người dùng được gán cho cơ sở dữ liệu, "mật khẩu" là mật khẩu của người dùng đó và "cơ sở dữ liệu" là tên của cơ sở dữ liệu bạn đang kết nối với Một trong các phương pháp trên sẽ cho phép giao tiếp giữa PHP và máy chủ cơ sở dữ liệu MySQL diễn ra Khi xảy ra lỗi trên, điều đầu tiên bạn nên làm là kiểm tra xem mô-đun mở rộng PHP MySQL có đang được tải hay không Để làm như vậy, chỉ cần lặp lại chức năng 5. Nó sẽ hiển thị cho bạn tất cả thông tin về phiên bản PHP đã cài đặt của bạn
Trên trang thông tin PHP, cuộn xuống phần có tiêu đề "mysqli". Bạn sẽ có thể thấy thư viện MySQLi đã bật trong hàng Phiên bản thư viện API ứng dụng khách như được hiển thị bên dưới Có hai thư viện để kết nối PHP với cơ sở dữ liệu MySQL
Các tiện ích mở rộng (mysqli hoặc PDO_MySQL) có thể sử dụng thư viện mysqlnd hoặc libmysql để kết nối từ PHP sang MySQL Thư viện máy khách MySQL là thư viện máy khách có mục đích chung, có nghĩa là nó có thể được sử dụng trên các ngôn ngữ khác nhau. Mặt khác, thư viện mysqlnd được tối ưu hóa cao và tích hợp chặt chẽ vào PHP. Thư viện mysqlnd là thư viện mặc định cho PHP 5. 4 và các phiên bản mới hơn. MySQL khuyên bạn nên sử dụng trình điều khiển riêng của MySQL cho PHP (mysqlnd) cùng với ext/mysqli hoặc PDO_MySQL Trong trường hợp của chúng tôi từ ảnh chụp màn hình ở trên, bạn có thể thấy rằng mysqlnd là trình điều khiển được kích hoạt Bây giờ chúng ta có thể cuộn thêm xuống phần có tiêu đề "mysqlnd" để biết thêm thông tin như trong ảnh chụp màn hình bên dưới Từ hàng cuối cùng (Tiện ích mở rộng API) của bảng trên, bạn có thể thấy rằng cả tiện ích mở rộng 2 và 3 đều được bật. Bằng cách này, kết nối cơ sở dữ liệu hoạt động hoàn hảo không có lỗiTrong trường hợp kết nối cơ sở dữ liệu dẫn đến lỗi chức năng mysqli_connect() không xác định, thì bạn sẽ thấy rằng trang phpinfo() không có phần "mysqli" và "mysqlnd" Các giải pháp cho lỗi hàm mysqli_connect() không xác định1. Nâng cấp lên phiên bản PHP mới hơnTrong hầu hết các trường hợp điều này đã xảy ra, tôi thấy rằng việc thay đổi PHP sang phiên bản mới hơn luôn hoạt động và khắc phục sự cố. Giả sử phiên bản PHP hiện tại của bạn là 7. 0, bạn có thể đổi sang phiên bản PHP mới hơn, chẳng hạn như PHP 7. 4 hoặc 8. 0 Điều này đã tự khắc phục sự cố cho tôi vào lần cuối cùng nó xảy ra với một trong những trang web tôi quản lý Dưới đây là hướng dẫn ngắn gọn về cách kiểm tra phiên bản PHP trang web của bạn -> 3 Cách đơn giản để kiểm tra phiên bản PHP trang web của bạn Và đây là hướng dẫn nâng cấp phiên bản PHP đơn giản -> Cách thay đổi phiên bản PHP trong cPanel 2. Thay đổi mysqli_connect thành mysqli mớiHãy thử thay đổi kết nối cơ sở dữ liệu của bạn từ thủ tục sang OOP, tức là. thay đổi thay thế mysqli_connect thành mysqli mới. Mặc dù đó là cách OOP, nhưng điều đó không có nghĩa là bạn sẽ phải thay đổi bất kỳ thứ gì khác trong mã PHP của mình. Tôi đã thấy nó một cách nghiêm túc khi thực hiện thay đổi này đã sửa lỗi 3. Cài đặt phần mở rộng PHP MySQLNếu bạn tự lưu trữ trang web, bạn chỉ cần cài đặt tiện ích mở rộng php-mysqli trên Ubuntu bằng cách sử dụng lệnh bên dưới
Sau đó, bạn sẽ được yêu cầu khởi động lại máy chủ apache bằng lệnh bên dưới để nó có hiệu lực 04. Thêm hoặc bỏ ghi chú dòng "extension=php_mysql. dll" trong php. tập tin iniNếu bạn tự host máy chủ, hãy mở php. ini và xóa dấu chấm phẩy trước dòng bên dưới 1Vì vậy, nó sẽ giống như dưới đây 2Nếu dòng này không tồn tại, chỉ cần thêm nó. Sau khi thực hiện các thay đổi, hãy lưu và khởi động lại máy chủ Apache của bạn Nếu trang web của bạn được lưu trữ bởi một công ty/nhà cung cấp dịch vụ lưu trữ và việc nâng cấp lên phiên bản PHP mới hơn hoặc thay đổi mysqli_connect thành mysqli mới dường như không hiệu quả với bạn, chỉ cần liên hệ với máy chủ lưu trữ thông báo lỗi và họ sẽ khắc phục sự cố đó cho bạn Làm cách nào để sửa cuộc gọi đến chức năng không xác định mysqli_ connect()?Có bốn phương pháp để sửa lỗi hàm Mysql_connect() không xác định. . Sử dụng MySQLi hoặc PDO Kết nối với Mysql với đối tượng Pdo khá đơn giản Kết nối với MySQL bằng đối tượng kết nối MySqli Quay trở lại PHP 5 cũ hơn, cập nhật mã của bạn lên mysqli hoặc PDO rồi nâng cấp lên PHP7 Hàm Mysqli_connect() là gì?Hàm mysqli_connect() cố gắng mở một kết nối đến Máy chủ MySQL chạy trên máy chủ có thể là tên máy chủ hoặc địa chỉ IP. Passing the NULL value or the string "localhost" to this parameter, the local host is assumed.
Sự khác biệt giữa Mysql_connect và Mysqli_connect là gì?Có một số khác biệt quan trọng giữa hai thư viện. Mysqli hỗ trợ bộ ký tự, mysql thì không . Mysqli hỗ trợ các câu lệnh đã chuẩn bị, mysql thì không. Mysql không hỗ trợ nhiều câu lệnh, mysqli thì có. |