如何使用 mysqli 建立从 PHP 到远程 mysql 数据库的连接?

问题描述 投票:0回答:1

我是 PHP 新手,我一直在尝试在 phpmyadmin 中建立从 PHP 后端到远程 mysql 服务器的连接(我不是管理员)。我一直在尝试使用以下代码,但它不允许我建立连接。

<?php

class Connection extends Mysqli{

    private $host = '1.1.1.1:3306'; 
    private $user = 'user'; 
    private $password = "password";
    private $database = 'db';

    function __construct()
    {
        parent::__construct($this->host, 
                            $this->user, 
                            $this->password,
                            $this->database );

        $this->set_charset('utf8');
        $this->connect_error == NULL ? 'Connection' : die("No connection");
    } // end construct
} // end connection

?>

错误:未捕获mysqli_sql_Exception:连接尝试失败,因为连接方在一段时间后没有正确响应,或者由于连接的主机未能响应而建立连接失败

Psd:也许我的问题是我无法识别我正在尝试连接哪个mysql主机,所以如果有人也可以告诉我如何在phpadmin中识别mysql主机,我将非常感激。

php mysql
1个回答
0
投票

要使用

mysqli
建立从 PHP 到远程 MySQL 数据库的连接,您的代码结构大部分是正确的,但存在一些潜在的问题和改进。这是分步指南:

1. 识别 MySQL 主机:

  • phpMyAdmin中,登录后可以在“服务器”选项卡下找到MySQL主机
  • 如果您不是管理员,请向您的托管提供商询问远程 MySQL 主机名和端口(可能与
    3306
    不同)。

2. 检查 MySQL 服务器设置:

确保允许远程 MySQL 连接。您需要配置服务器以接受来自 PHP 后端 IP 地址的连接(或所有地址的通配符

%
)。

3. 错误处理:

修改错误处理逻辑以更好地检测和显示连接错误。

4. 更新的代码示例:

这是代码的改进版本,具有更好的错误报告和连接检查:

<?php

class Connection extends mysqli {

    private $host = '1.1.1.1'; // Remote MySQL server IP
    private $port = 3306; // Default MySQL port (modify if needed)
    private $user = 'user'; 
    private $password = 'password'; 
    private $database = 'db';

    function __construct() {
        // Call parent constructor
        parent::__construct($this->host, $this->user, $this->password, $this->database, $this->port);

        // Check connection errors
        if ($this->connect_error) {
            die('Connection failed: (' . $this->connect_errno . ') ' . $this->connect_error);
        } else {
            echo "Connected successfully!";
        }

        // Set charset to avoid character encoding issues
        $this->set_charset('utf8');
    }
}

$connection = new Connection();
?>

5. 调试技巧:

  • 启用 PHP 错误报告:

    ini_set('display_errors', 1);
    error_reporting(E_ALL);
    
  • 检查 MySQL 权限: 确保 MySQL 用户具有对您要连接的特定 IP 进行远程访问的权限。

  • 主机名中的端口:您无需在主机名字符串中指定端口(例如,

    1.1.1.1:3306
    )。相反,将其作为单独的参数传递(如上面的代码所示)。

6. 防火墙/网络配置:

确保远程服务器的防火墙允许端口

3306
(或您正在使用的端口)上的流量。

按照这些步骤,您应该能够在 PHP 后端和远程 MySQL 服务器之间建立连接。

© www.soinside.com 2019 - 2024. All rights reserved.