Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用不同的PHP版本从服务器B上的PHP mysqli访问服务器A上的MySql数据库_Php_Mysql_Database_Mysqli_Remote Access - Fatal编程技术网

使用不同的PHP版本从服务器B上的PHP mysqli访问服务器A上的MySql数据库

使用不同的PHP版本从服务器B上的PHP mysqli访问服务器A上的MySql数据库,php,mysql,database,mysqli,remote-access,Php,Mysql,Database,Mysqli,Remote Access,我试图弄清楚,如何从MySql数据库表中检索记录,该数据库表位于服务器A上,即phpversion5.3.29从服务器BPHPmysqliphpversion7.2.8 我找到了这个例子,但我不明白,它是如何与我正在尝试的工作相关的,怀疑它是否是我正在寻找的 我是php新手,我能想象的就是,我应该在服务器B上使用服务器A的连接数据,在服务器A的远程MySQL中添加访问服务器B的主机IP,似乎我必须在服务器A上的MySQL数据库中添加数据库用户和密码,但我不确定,我必须在服务器B上从哪里获取它 服

我试图弄清楚,如何从
MySql
数据库表中检索记录,该数据库表位于服务器A上,即
phpversion5.3.29
服务器B
PHP
mysqli
phpversion7.2.8

我找到了这个例子,但我不明白,它是如何与我正在尝试的工作相关的,怀疑它是否是我正在寻找的

我是
php
新手,我能想象的就是,我应该在服务器B上使用服务器A的连接数据,在服务器A的
远程MySQL
中添加
访问服务器B
的主机IP,似乎我必须在服务器A上的
MySQL数据库中添加数据库用户和密码,但我不确定,我必须在服务器B上从哪里获取它

服务器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);
}
?>
版本由
phpinfo()
PHP版本5.3.29

数据库服务器

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)
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)
网络服务器

cpsrvd 11.70.0.51
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30
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.7.7
Version information: 4.6.6
服务器B

<?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);
}
?>
版本由
phpinfo()
PHP版本7.2.8

数据库服务器

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)
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)
网络服务器

cpsrvd 11.70.0.51
Database client version: libmysql - 5.1.73
PHP extension: mysqliDocumentation curlDocumentation mbstringDocumentation
PHP version: 5.6.30
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.7.7
Version information: 4.6.6
任何建议、指南或示例都会非常有用

编辑:

我的回答尝试,首先我在
远程MySQL
中添加了服务器B
IP
,位于服务器A上。My
conn.php
,位于服务器B上,用于连接到服务器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);
}
?>
但结果是,当我打开
www.site.com/folder/dbtab.php
www.site.com/folder/conn.php
时,页面不会加载,只是冻结

服务器A的ping操作

<?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);
}
?>

您不需要在服务器A上使用php来实现此目的。您只需要将MySQL服务器(服务器A)配置为

  • 允许网络访问(通过IP地址)和
  • 为服务器B的IP地址创建一个MySQL帐户
  • 如果您已经设置好了,您可以使用以下命令从服务器B上的php创建连接

    $mysqli=newmysqli(“,”用户“,”密码“,”数据库”)

    请访问优秀的php网站:

    步骤1、2取决于您的MySQL服务器。如果您具有直接根访问权限,则需要编辑配置文件并允许联网,否则这取决于托管服务

    要创建具有远程访问权限的用户帐户,请发出以下SQL语句(或使用web GUI):

    在.*上授予“用户名”@


    请参阅MySql用户权限授予手册:

    我认为更重要的是两台服务器上的MySql版本(?)除非您构建一个API来抽象数据库层,否则PHP在服务器A上并不重要。您只需要直接连接到远程服务器上的MySql服务器…@Edwin Hello,我已经编辑了问题您好,我已经尝试按照您的指南进行操作,我已经编辑了我的问题,请检查,我不确定我在回答您的编辑时做错了什么:dbtab.php中有一个输入错误。第4行变量名
    $conn
    ;)中缺少一个n是的,但打字错误只出现在这篇文章中,在服务器上,我在两个文档中都有相同的
    conn
    ,我检查过,结果相同。似乎这不是失败的原因,有时我在长时间加载后出现错误504=(啊,我明白了。然后这听起来像是连接错误。可能是某个防火墙阻止了对服务器a的访问?请尝试从服务器B ping它,如果这样行得通,请查看是否可以连接到MySql端口(通常为3306)例如,通过
    nmap-p3306
    @M.Biegert,我添加了ping结果连接失败,原因是
    telnet www.mysite.com 3306