Hướng dẫn call to undefined function mysqli_connect windows - gọi đến cửa sổ mysqli_connect hàm không xác định

Tôi có mã sau:


Nếu tôi chạy điều này, tôi sẽ nhận được thông báo lỗi này:

Lỗi gây tử vong: Lỗi chưa bị ảnh hưởng: Gọi đến hàm không xác định mysqli_connect ()

Tôi đang sử dụng PHP cho Windows đã tải xuống

Từ những gì tôi đã đọc, bạn phải bỏ các phần trong tệp php.ini của mình. Không có php.ini trong thư mục PHP của tôi, nhưng chỉ phát triển php.ini và php.ini-sản xuất.

Tôi đã thử đổi tên một trong các tệp thành php.ini và không điều chỉnh extension=mysqli, nhưng vấn đề vẫn còn đó.

Làm thế nào tôi có thể giải quyết vấn đề này?

& nbsp; & nbsp; John Mwaniki / & nbsp; & nbsp; 29 tháng 11 năm 2021

Tôi đã thấy nó nghiêm trọng khi kết nối cơ sở dữ liệu PHP mysqli_connect() hoạt động hoàn toàn tốt trong nhiều tháng hoặc nhiều năm, sau đó đột nhiên nó ngừng hoạt động. Khi bật báo cáo lỗi PHP hoặc kiểm tra lỗi trong tệp ERROR_LOG trong CPanel, bạn tìm thấy lỗi bên dưới:

PHP FATAL Lỗi: Lỗi chưa bị ảnh hưởng: Gọi đến hàm không xác định mysqli_connect () in/home/username/public_html/...

Điều này có thể tạo ra một sự bất tiện lớn và ảnh hưởng tiêu cực đến cơ sở dữ liệu của bạn một cách tiêu cực, đặc biệt nếu bạn không truy cập nó thường xuyên.

Như bạn có thể thấy từ lỗi trên, PHP không nhận ra hàm mysqli_connect(). Đ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 MySQLI.mysqli extension.

Có 2 cách kết nối PHP với cơ sở dữ liệu MySQL:

  • Mở rộng MySQLI
  • PDO (Phần mở rộng đối tượng dữ liệu PHP)

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 đã bị phản đối vào năm 2012 và được thay thế bằng tiện ích mở rộng MySQLI. "Tôi" trong mysqli là viết tắt của cải tiến.MySQLi extension. The "i" in MySQLi stands for improved.

Mở rộng MySQLI hỗ trợ cả các cách kết nối theo hướng đối tượng và thủ tục với cơ sở dữ liệu.

Cách thủ tục

$conn = mysqli_connect("hostname", "username", "password", "database");

Cách hướng đối tượng

$conn = new mysqli("hostname", "username", "password", "database");

Tất cả những gì bạn phải làm là thay thế các giá trị trong báo giá ở trên bằng thông tin xác thực 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ù nó có thể khác nhau 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.

Một trong những phương thức trên sẽ cho phép giao tiếp giữa máy chủ cơ sở dữ liệu PHP và cơ sở dữ liệu MySQL.

Khi lỗi trên xảy ra, điều đầu tiên bạn nên làm là kiểm tra xem mô -đun mở rộng PHP MySQL có được tải không.

Để làm như vậy, chỉ cần lặp lại hàm

$conn = mysqli_connect("hostname", "username", "password", "database");
1. 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ể xem thư viện MySQLI được bật trong hàng phiên bản thư viện API máy khách như hiển thị bên dưới:Client API library version row as shown below:

Hướng dẫn call to undefined function mysqli_connect windows - gọi đến cửa sổ mysqli_connect hàm không xác định

Có hai thư viện để kết nối PHP với cơ sở dữ liệu MySQL:

  • Trình điều khiển gốc MySQL cho PHP (
    $conn = mysqli_connect("hostname", "username", "password", "database");
    2)
  • Thư viện máy khách MySQL (
    $conn = mysqli_connect("hostname", "username", "password", "database");
    3)

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 với mysql.

Thư viện máy khách MySQL là một 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 các phiên bản Php 5.4 trở lên. MySQL khuyên bạn nên sử dụng trình điều khiển gốc 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 bật.mysqlnd is the enabled driver.

Bây giờ chúng ta có thể cuộn nhiều hơn vào phần có tiêu đề "MySQLND" để biết thêm thông tin như trong ảnh chụp màn hình dưới đây:mysqlnd" for more information as in the screenshot below:

Hướng dẫn call to undefined function mysqli_connect windows - gọi đến cửa sổ mysqli_connect hàm không xác định

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

$conn = mysqli_connect("hostname", "username", "password", "database");
4 và
$conn = mysqli_connect("hostname", "username", "password", "database");
5 đề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 mà không có lỗi.API Extensions) of the above table, you can see that both
$conn = mysqli_connect("hostname", "username", "password", "database");
4 and
$conn = mysqli_connect("hostname", "username", "password", "database");
5 extensions are enabled. This way the database connection works perfectly with no error.

Trong trường hợp kết nối cơ sở dữ liệu dẫn đến hàm không xác định lỗi mysqli_connect (), thì bạn sẽ thấy trang phpinfo () không có phần "mysqli" và phần "mysqlnd".

Các giải pháp cho hàm không xác định mysqli_connect () lỗi

1. Nâng cấp lên phiên bản PHP sau này

Trong 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 thành phiên bản sau này luôn hoạt động và khắc phục vấn đề. Ví dụ, giả sử phiên bản PHP hiện tại của bạn là 7.0, bạn có thể thay đổi thành phiên bản PHP sau này như Php 7.4 hoặc 8.0.

Điều này cá nhân đã khắc phục vấn đề cho tôi 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à một 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à một hướng dẫn đơn giản để nâng cấp phiên bản PHP -> Cách thay đổi phiên bản PHP trong cPanel

2. Thay đổi mysqli_connect thành mysqli mới

Hã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, điều đó không có nghĩa là bạn sẽ phải thay đổi bất cứ thứ gì khác trong mã PHP của mình. Tôi đã thấy nó nghiêm trọng khi thực hiện thay đổi này đã sửa lỗi.mysqli_connect to new mysqli. Though it is the OOP way, it doesn't mean that you will have to change anything else in your PHP code. I have seen it severally where making this change fixed the error.

3. Cài đặt tiện ích mở rộng PHP MySQL

Nế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:

sudo apt install php-mysqli

Sau đó, bạn sẽ được yêu cầu khởi động lại máy chủ Apache với lệnh bên dưới để nó có hiệu lực.

sudo service apache2 restart

4

Nếu bạn tự lưu trữ máy chủ, hãy mở tệp php.ini và xóa dấu chấm phẩy phía trước dòng bên dưới:


;extension=php_mysqli.dll

Vì vậy, nó sẽ giống như dưới đây:


extension=php_mysqli.dll

Nế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, 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 nhà cung cấp/công ty lưu trữ và nâng cấp lên phiên bản PHP sau hoặc thay đổi mysqli_connect thành mySQLI mới dường như không hoạt động với bạn, chỉ cần liên hệ với máy chủ với thông báo lỗi và họ sẽ sửa nó cho bạn.

Đó là tất cả cho bài viết này. Tôi hy vọng rằng nó rất hữu ích cho bạn.