gpt4 book ai didi

php - 从具有不同 PHP 版本的服务器 B 上的 PHP mysqli 访问服务器 A 上的 MySql 数据库

转载 作者:搜寻专家 更新时间:2023-10-30 22:06:19 24 4
gpt4 key购买 nike

我想弄清楚,如何从位于 服务器 A 上的 MySql 数据库表中检索记录,这是 PHP 版本 5.3 .29 来自 server B php mysqli PHP Version 7.2.8

我找到了这个例子 How to Connect to the Remote MySQL Database using PHP ,但我不明白,它如何与我正在尝试做的事情相关,怀疑它是否是我正在寻找的东西

我是 php 的新手,所有我能想到的,我应该将来自 server A 的连接数据用于 php mysqliserver B上,在server A的Remote MySQL中添加server Baccess host IP ,似乎我必须在 server A 上的 MySQL databases 中添加数据库用户和密码,但我不确定,我必须从哪里获得它在服务器 B

服务器 A:

phpinfo(); 的版本:PHP 版本 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 版本 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

任何建议、指南或示例都会非常有帮助

编辑:

我的回答尝试,首先我在 server A< 上的 Remote MySQL 中添加了 server BIP/强>。我的 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 也位于 Server Bconn.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.phpwww.site.com/folder/conn.php,页面不加载,只是卡住

服务器A的ping:

enter image description here

最佳答案

为此,您不需要服务器 A 上的 php。您只需要将您的 MySQL 服务器(服务器 A)配置为

  1. 允许网络访问(通过 IP 地址)和
  2. 为服务器 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

关于php - 从具有不同 PHP 版本的服务器 B 上的 PHP mysqli 访问服务器 A 上的 MySql 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51894844/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com