Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

  1. Hãy chắc chắn rằng bạn đã cấu hình PHP với các phần mở rộng MySQL. Trên MacPorts, bạn cần cài đặt riêng nó:
me@lastdance Sites % sudo port search php | grep mysql
php-mysql-xdevapi @8.0.17 (php, devel)
php52-mysql @5.2.17 (php, databases)
a PHP interface to MySQL databases, including the mysql, mysqli and pdo_mysql extensions
php53-mysql @5.3.29 (php, databases)
a PHP interface to MySQL databases, including the mysql, mysqli and pdo_mysql extensions
php54-mysql @5.4.45 (php, databases)
a PHP interface to MySQL databases, including the mysql, mysqli and pdo_mysql extensions
php55-mysql @5.5.38 (php, databases)
a PHP interface to MySQL databases, including the mysql, mysqli and pdo_mysql extensions
php56-mysql @5.6.40 (php, databases)
a PHP interface to MySQL databases, including the mysql, mysqli and pdo_mysql extensions
php70-mysql @7.0.33 (php, databases)
a PHP interface to MySQL databases, including the mysqli and pdo_mysql extensions
php71-mysql @7.1.32 (php, databases)
a PHP interface to MySQL databases, including the mysqli and pdo_mysql extensions
php71-mysql-xdevapi @8.0.17 (php, devel)
php72-mysql @7.2.23 (php, databases)
a PHP interface to MySQL databases, including the mysqli and pdo_mysql extensions
php72-mysql-xdevapi @8.0.17 (php, devel)
php73-mysql @7.3.10 (php, databases)
a PHP interface to MySQL databases, including the mysqli and pdo_mysql extensions
php73-mysql-xdevapi @8.0.17 (php, devel)
me@lastdance Sites % sudo port install php73-mysql
--->  Computing dependencies for php73-mysql
--->  Cleaning php73-mysql
--->  Scanning binaries for linking errors
--->  No broken files found.
--->  No broken ports found.
me@lastdance Sites %
  1. Hãy chắc chắn rằng ổ cắm MySQL LocalHost của bạn được chỉ định chính xác trong tệp Php.ini của bạn. Xem người dùng cơ sở dữ liệu của tôi tồn tại, nhưng tôi vẫn nhận được (hy000/2002): không có tệp hoặc thư mục đó

Trên hệ thống của mình, tôi phải chỉnh sửa tệp /opt/local/etc/php73/php.ini và thêm điều này:

; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
; http://php.net/mysqli.default-socket
mysqli.default_socket = /opt/local/var/run/mysql8/mysqld.sock

Giới thiệu

Để 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.MySQL database, you must first establish a connection between the database and a PHP script.

Trong hướng dẫn này, hãy tìm hiểu cách sử dụng các đối tượng Dữ liệu PHP và tiện ích PHP của MySQLI để kết nối với MySQL. Các chức năng MySQL_ di sản truyền thống được không dùng nữa và chúng tôi sẽ không bao gồm chúng trong hướng dẫn này.. Traditional legacy mysql_ functions are deprecated and we will not cover them in this guide.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Điều kiện tiên quyết

  • Đặc biệt tạo đặc quyền
  • Cơ sở dữ liệu MySQL
  • Tiện ích mở rộng MySQLI hoặc PDO

Có hai cách phổ biến để kết nối với cơ sở dữ liệu MySQL bằng PHP:

  1. Với phần mở rộng php mysm mysqliPHP’s MySQLi Extension
  2. Với các đối tượng dữ liệu PHP (PDO)PHP Data Objects (PDO)

Hướng dẫn cũng bao gồm các giải thích cho các thông tin xác thực được sử dụng trong các tập lệnh PHP và các lỗi tiềm năng mà bạn có thể gặp phải bằng cách sử dụng MySQLI và PDO.

Tùy chọn 1: Kết nối với MySQL với tiện ích mở rộng được cải tiến MySQL

MySQLI là một tiện ích 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 hướng đối tượng và thủ tục. Nó hỗ trợ các câu lệnh được chuẩn bị phía máy chủ, nhưng không phải là các câu lệnh được chuẩn bị phía máy khách. is an extension that only supports MySQL databases. It allows access to new functionalities found in MySQL systems (version 4.1. and above), providing both an object-oriented and procedural interface. It supports server-side prepared statements, but not client-side prepared statements.

Tiện ích mở rộng MySQLI được bao gồm Php phiên bản 5 và mới hơ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 là như sau:

connect_error) {
die("Connection failed: " . $conn->connect_error);
}

echo “Connected successfully”;

mysqli_close($conn);

?>

Thông tin giải thích

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 sẽ tương ứng với chi tiết kết nối của bạn.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Tiếp theo là hàm PHP chính mysqli_connect (). Nó thiết lập một kết nối với cơ sở dữ liệu được chỉ định.mysqli_connect(). It establishes a connection with the specified database.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Sau đây là một câu nói nếu có. Đây là một phần của mã cho thấy liệu kết nối có được thiết lập hay không. Khi kết nối không thành công, nó cho kết nối tin nhắn không thành công. Hàm Die in thông báo và sau đó thoát ra khỏi tập lệnh.if statement.” It is the part of the code that shows whether the connection was established. When the connection fails, it gives the message Connection failed. The die function prints the message and then exits out of the script.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

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

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Khi tập lệnh kết thúc, kết nối với cơ sở dữ liệu cũng đóng. Nếu bạn muốn kết thúc mã theo cách thủ công, hãy sử dụng hàm mysqli_close.mysqli_close function.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Tùy chọn 2: Kết nối với MySQL với 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 ở 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ả báo cáo chuẩn bị phía máy chủ và khách hàng.is an extension that serves as an interface for connecting to databases. Unlike MySQLi, it can perform any database functions and is not limited to MySQL. It allows flexibility among databases and is more general than MySQL. PDO supports both server and client-side prepared statements.

Lưu ý: 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. PDO will not run on PHP versions older than 5.0 and is included in PHP 5.1.

Mã PHP để kết nối với cơ sở dữ liệu MySQL thông qua tiện ích 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 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à ký tự) và giá trị của chúng. Các giá trị này sẽ 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ột máy chủ trực tuyến, hãy nhập tên máy chủ của máy chủ đó.server name will be localhost. If connected to an online server, type in the server name of that server.

Charset biến cho biết cơ sở dữ liệu trong đó mã hóa nó sẽ nhận và gửi dữ liệu. Tiêu chuẩn được đề xuất là UTF8MB4.charset tells the database in which encoding it will be receiving and sending data. The recommended standard is utf8mb4.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Hãy 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ệ để chăm sóc bất kỳ vấn đề tiềm ẩn nào 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 thử và bắt các khối.exception class to take care of any potential problems in database queries. It solves these problems by incorporating try and catch blocks.

Nếu một vấn đề 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 vấn đề. Bắt các khối có thể được đặt để hiển thị thông báo lỗi hoặc chạy mã thay thế.catch and solve the issue. Catch blocks can be set to show error messages or run an alternative code.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

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ó định nghĩa 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.DSN, which stands for data(base) source name. It is crucial as it defines the type and name of the database, along with any other additional information.

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ợ các 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ế một phần của cú pháp (MySQL) bằng cơ sở dữ liệu bạn đang sử dụng.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

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ố:PDO variable. This variable is going to establish a connection to the database. It has three parameters:

  1. Tên nguồn dữ liệu (DSN)
  2. Tên người dùng cho cơ sở dữ liệu của bạn
  3. Mật khẩu cho cơ sở dữ liệu của bạn

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Sau đây là phương thức SetAttribution thêm hai tham số vào PDO:setAttribute method adding two parameters to the PDO:

  1. PDO::ATTR_ERRMODE
  2. 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.exception in case a query fails.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Thêm kết nối Echo "ổn." Để xác nhận một kết nối được thiết lập.Connection Okay.” to confirm a connection is established.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Trả về biến PDO để kết nối với cơ sở dữ liệu.the PDO variable to connect to the database.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Sau khi trả lại biến PDO, xác định PDOException trong khối bắt 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.PDOException in the catch block by instructing it to display a message when the connection fails.

Hướng dẫn php mysql cannot connect to database - php mysql không thể kết nối với cơ sở dữ liệu

Lỗi tiềm năng 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ã trong cơ sở dữ liệu. Nếu cả hai không khớp, một kết nối với cơ sở dữ liệu không thể được thiết lập. Bạn sẽ nhận được một thông báo lỗi nói rằng kết nối đã thất bại.

Phương pháp khả thi::

  1. Kiểm tra chi tiết cơ sở dữ liệu để đảm bảo mật khẩu là chính xác.
  2. Đảm bảo có 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 thể kết nối 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.server name is set to localhost.

Trong trường hợp các lỗi khác, hãy đảm bảo tham khảo tệp ERROR_LOG để giúp khi cố gắng giải quyết mọi vấn đề. Tệp được đặt trong cùng một thư mục nơi tập lệnh đang chạy.error_log file to help when trying to solve any issues. The file is located in the same folder where the script is running.

Sự kết luận

Hướng dẫn này 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ó lợi thế của họ. 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 thành 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.MySQLi and PDO have their advantages. However, bear in mind that MySQLi is only used for MySQL databases. Therefore, if you want to change to another database, you will have to rewrite the entire code. On the other hand, PDO works with 12 different databases, which makes the migration much easier.

Tại sao cơ sở dữ liệu MySQL không kết nối?

Thông thường có nghĩa là không có máy chủ MySQL chạy trên hệ thống hoặc bạn đang sử dụng tên tệp unix không chính xác hoặc số cổng TCP/IP khi cố gắng kết nối với máy chủ. Bạn cũng nên kiểm tra xem cổng TCP/IP bạn đang sử dụng chưa bị chặn bởi tường lửa hoặc dịch vụ chặn cổng.there is no MySQL server running on the system or that you are using an incorrect Unix socket file name or TCP/IP port number when trying to connect to the server. You should also check that the TCP/IP port you are using has not been blocked by a firewall or port blocking service.

Làm thế nào để bạn kết nối cơ sở dữ liệu MySQL với PHP?

Tạo nên cơ sở dữ liệu..
Tạo một thư mục trong htdocs ..
Tạo tệp kết nối cơ sở dữ liệu trong PHP ..
Tạo tệp PHP mới để kiểm tra kết nối cơ sở dữ liệu của bạn ..
Chạy nó ..

Làm cách nào để sửa lỗi kết nối MySQL?

Một số giải pháp vĩnh viễn là:..
Xác định điều gì sai với máy chủ DNS của bạn và sửa nó ..
Chỉ định địa chỉ IP thay vì tên máy chủ trong bảng cấp MySQL ..
Đặt một mục cho tên máy khách vào /etc /máy chủ trên Unix hoặc \ windows \ máy chủ trên Windows ..
Bắt đầu MySQLD với biến hệ thống SKIP_NAME_RESolve được bật ..

Tại sao tôi không thể kết nối với phpmyadmin?

PhpMyAdmin đã cố gắng kết nối với máy chủ MySQL và máy chủ đã từ chối kết nối.Bạn nên kiểm tra máy chủ, tên người dùng và mật khẩu trong cấu hình của bạn và đảm bảo rằng chúng tương ứng với thông tin được cung cấp bởi quản trị viên của máy chủ MySQL.check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.