从具有不同 PHP 版本的服务器 B 上的 PHP mysqli 访问服务器 A 上的 MySql 数据库
Access MySql database on the Server A from PHP mysqli on Server B with different PHP version
我想知道如何从位于 服务器 A 上的 MySql
数据库表中检索记录,即 PHP Version 5.3.29
来自 服务器 B php
mysqli
PHP Version 7.2.8
我找到了这个例子How to Connect to the Remote MySQL Database using PHP,但我不明白,它是如何与我正在尝试做的事情相关的,怀疑它是否是我正在寻找的东西
我是 php
的新手,我可以想象,我应该使用来自 服务器 A 的连接数据用于 php mysqli
服务器B,并在服务器A[=91的Remote MySQL
中添加服务器B的access host IP
=],似乎我必须在 服务器 A 上的 MySQL databases
中添加数据库用户和密码,但我不确定,我必须在哪里获取它 服务器B
服务器 A:
版本phpinfo();
:PHP Version 5.3.29
Database server
Server: Localhost via UNIX socket
Server type: MySQL
Server version: 5.6.39 - MySQL Community Server (GPL)
Protocol version: 10
Server charset: UTF-8 Unicode (utf8)
Web server
cpsrvd 11.70.0.51
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30
phpMyAdmin
Version information: 4.7.7
服务器 B:
版本phpinfo();
:PHP Version 7.2.8
Database server
Server: Localhost via UNIX socket
Server type: MariaDB
Server version: 5.5.56-MariaDB - MariaDB Server
Protocol version: 10
Server charset: UTF-8 Unicode (utf8)
Web server
nginx/1.11.10
Database client version: libmysql - mysqlnd 5.0.11-dev - $Id:
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30
phpMyAdmin
Version information: 4.6.6
任何建议、指南或示例都会非常有帮助
编辑:
我的回答尝试,首先我在服务器ARemote MySQL
中添加了服务器B的IP
。我的 conn.php
,位于 Server B 上,连接到 Server A:
<?php
$servername = "Server_A_IP";
$username = "Server_A_database_user";
$password = "Server_A_database_user_password";
$db = "Server_A_database";
$conn = new mysqli($servername, $username, $password, $db);
$conn->set_charset('utf8');
if(!$conn)
{
die ("Error on the Connection" . $conn->connect_error);
}
?>
和 dbtab.php
也位于 服务器 B 上,conn.php
在同一文件夹中:
<?php
include 'conn.php';
$sql = "SELECT * FROM tab";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
<h1 align="center">Database</h1>
<table border="1" align="center" style="line-height:25px;">
<tr>
<th colspan="2">Records</th>
</tr>
<tr>
<th bgcolor="#ff897f">id</td>
<th bgcolor="#ff897f">name</td>
</tr>
<?php
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
?>
<tr>
<td bgcolor="#e5cac8"><?php echo $row['id']; ?></td>
<td bgcolor="#e5cac8"><?php echo $row['name']; ?></td>
<?php
}
}
else
{
?>
<tr>
<th colspan="2">There's No data found!!!</th>
</tr>
<?php
}
?>
</body>
</html>
但结果是,当我想打开 www.site.com/folder/dbtab.php
或 www.site.com/folder/conn.php
时,页面没有加载,只是冻结了
ping 服务器 A:
为此,您不需要在服务器 A 上 php。您只需要将 MySQL 服务器(服务器 A)配置为
- 允许网络访问(通过 IP 地址)和
- 为服务器 B 的 IP 地址创建一个 MySQL 帐户
如果您已设置此功能,则可以使用
从服务器 B 上的 php 创建连接
$mysqli = new mysqli("<IP of Server A>", "user", "password", "database");
查看优秀的 php 网站:mysqli Connections
步骤 1、2 取决于您的 MySQL 服务器。如果您有直接的 root 访问权限,则需要编辑配置文件并允许联网,否则取决于托管服务。
要创建具有远程访问权限的用户帐户,请发出以下 SQL 语句(或使用 Web GUI):
GRANT <Rights> ON <db-name>.* TO 'username'@'<IP of Server B>';
请参阅 MySql 手册,了解如何向用户授予权限:https://dev.mysql.com/doc/refman/5.5/en/grant.html
我想知道如何从位于 服务器 A 上的 MySql
数据库表中检索记录,即 PHP Version 5.3.29
来自 服务器 B php
mysqli
PHP Version 7.2.8
我找到了这个例子How to Connect to the Remote MySQL Database using PHP,但我不明白,它是如何与我正在尝试做的事情相关的,怀疑它是否是我正在寻找的东西
我是 php
的新手,我可以想象,我应该使用来自 服务器 A 的连接数据用于 php mysqli
服务器B,并在服务器A[=91的Remote MySQL
中添加服务器B的access host IP
=],似乎我必须在 服务器 A 上的 MySQL databases
中添加数据库用户和密码,但我不确定,我必须在哪里获取它 服务器B
服务器 A:
版本phpinfo();
:PHP Version 5.3.29
Database server
Server: Localhost via UNIX socket Server type: MySQL Server version: 5.6.39 - MySQL Community Server (GPL) Protocol version: 10 Server charset: UTF-8 Unicode (utf8)
Web server
cpsrvd 11.70.0.51 Database client version: libmysql - 5.1.73 PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation PHP version: 5.6.30
phpMyAdmin
Version information: 4.7.7
服务器 B:
版本phpinfo();
:PHP Version 7.2.8
Database server
Server: Localhost via UNIX socket Server type: MariaDB Server version: 5.5.56-MariaDB - MariaDB Server Protocol version: 10 Server charset: UTF-8 Unicode (utf8)
Web server
nginx/1.11.10 Database client version: libmysql - mysqlnd 5.0.11-dev - $Id: PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation PHP version: 5.6.30
phpMyAdmin
Version information: 4.6.6
任何建议、指南或示例都会非常有帮助
编辑:
我的回答尝试,首先我在服务器ARemote MySQL
中添加了服务器B的IP
。我的 conn.php
,位于 Server B 上,连接到 Server A:
<?php
$servername = "Server_A_IP";
$username = "Server_A_database_user";
$password = "Server_A_database_user_password";
$db = "Server_A_database";
$conn = new mysqli($servername, $username, $password, $db);
$conn->set_charset('utf8');
if(!$conn)
{
die ("Error on the Connection" . $conn->connect_error);
}
?>
和 dbtab.php
也位于 服务器 B 上,conn.php
在同一文件夹中:
<?php
include 'conn.php';
$sql = "SELECT * FROM tab";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
<h1 align="center">Database</h1>
<table border="1" align="center" style="line-height:25px;">
<tr>
<th colspan="2">Records</th>
</tr>
<tr>
<th bgcolor="#ff897f">id</td>
<th bgcolor="#ff897f">name</td>
</tr>
<?php
if($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
?>
<tr>
<td bgcolor="#e5cac8"><?php echo $row['id']; ?></td>
<td bgcolor="#e5cac8"><?php echo $row['name']; ?></td>
<?php
}
}
else
{
?>
<tr>
<th colspan="2">There's No data found!!!</th>
</tr>
<?php
}
?>
</body>
</html>
但结果是,当我想打开 www.site.com/folder/dbtab.php
或 www.site.com/folder/conn.php
时,页面没有加载,只是冻结了
ping 服务器 A:
为此,您不需要在服务器 A 上 php。您只需要将 MySQL 服务器(服务器 A)配置为
- 允许网络访问(通过 IP 地址)和
- 为服务器 B 的 IP 地址创建一个 MySQL 帐户
如果您已设置此功能,则可以使用
从服务器 B 上的 php 创建连接$mysqli = new mysqli("<IP of Server A>", "user", "password", "database");
查看优秀的 php 网站:mysqli Connections
步骤 1、2 取决于您的 MySQL 服务器。如果您有直接的 root 访问权限,则需要编辑配置文件并允许联网,否则取决于托管服务。
要创建具有远程访问权限的用户帐户,请发出以下 SQL 语句(或使用 Web GUI):
GRANT <Rights> ON <db-name>.* TO 'username'@'<IP of Server B>';
请参阅 MySql 手册,了解如何向用户授予权限:https://dev.mysql.com/doc/refman/5.5/en/grant.html