我是 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主机,我将非常感激。
要使用
mysqli
建立从 PHP 到远程 MySQL 数据库的连接,您的代码结构大部分是正确的,但存在一些潜在的问题和改进。这是分步指南:
3306
不同)。确保允许远程 MySQL 连接。您需要配置服务器以接受来自 PHP 后端 IP 地址的连接(或所有地址的通配符
%
)。
修改错误处理逻辑以更好地检测和显示连接错误。
这是代码的改进版本,具有更好的错误报告和连接检查:
<?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();
?>
启用 PHP 错误报告:
ini_set('display_errors', 1);
error_reporting(E_ALL);
检查 MySQL 权限: 确保 MySQL 用户具有对您要连接的特定 IP 进行远程访问的权限。
主机名中的端口:您无需在主机名字符串中指定端口(例如,
1.1.1.1:3306
)。相反,将其作为单独的参数传递(如上面的代码所示)。
确保远程服务器的防火墙允许端口
3306
(或您正在使用的端口)上的流量。
按照这些步骤,您应该能够在 PHP 后端和远程 MySQL 服务器之间建立连接。