如何使用PHP从其他主机连接到MySQL数据库

如何使用PHP从其他主机连接到MySQL数据库,php,mysql,database,Php,Mysql,Database,我需要使用PHP连接到MySQL,但数据库位于另一台主机上,我无法正确连接 我正在使用这个代码。错误在这一行: $mysqli = new mysqli("hostex.lt","myInfo","pass","myInfoo"); “hostex.lt”。数据库在hostex.lt,phpMyAdmin:myadmin.hostex.lt中。我已经尝试过了,但它总是打印错误:错误:错误:错误:错误:错误:错误:错误:错误: 这段代码在我使用localhost的另一个项目中工作,所以这里有一个

我需要使用PHP连接到MySQL,但数据库位于另一台主机上,我无法正确连接

我正在使用这个代码。错误在这一行:

$mysqli = new mysqli("hostex.lt","myInfo","pass","myInfoo");
“hostex.lt”。数据库在hostex.lt,phpMyAdmin:myadmin.hostex.lt中。我已经尝试过了,但它总是打印
错误:错误:错误:错误:错误:错误:错误:错误:错误:

这段代码在我使用localhost的另一个项目中工作,所以这里有一个问题。
        for($i=1;$i<=10;$i++)
        {
    if ($stmt = $mysqli->prepare("INSERT into game (taskai, userName) VALUE (?,?) ")) {
    if (!$mysqli->set_charset("utf8")) {
        printf("Error loading character set utf8: %s\n", $mysqli->error);
    } else {
    //    printf(" ", $mysqli->character_set_name());
    }


    $stmt->bind_param('ss', $score, $name);
      // $stmt->bind_param("s", $username);

       $stmt->execute();

       if ($stmt->error != '') {
           echo ' error:'.$stmt->error;
       } else {
           echo 'success';
       }
       $stmt->close();
    } else {
       echo 'error:'.$mysqli->error;
    }
    }
    $mysqli->close();
    ?>
for($i=1;$iprepare(“插入到游戏(taskai,用户名)值(?,)”){
if(!$mysqli->set\u字符集(“utf8”)){
printf(“加载字符集utf8时出错:%s\n”,$mysqli->Error);
}否则{
//printf(“,$mysqli->character_set_name());
}
$stmt->bind_参数('ss',$score,$name);
//$stmt->bind_参数(“s”,$username);
$stmt->execute();
如果($stmt->error!=''){
回显“错误:”。$stmt->错误;
}否则{
呼应"成功",;
}
$stmt->close();
}否则{
回显“错误:”。$mysqli->错误;
}
}
$mysqli->close();
?>
更新

我有一个错误:


默认情况下,MySQL只允许从本地主机访问,如果您想从其他主机访问它,必须显式允许

登录PHPMyAdmin,转到“权限”,添加用户“myDbName”@“www.ftpDomainName.lt”(在@之后的主机部分很重要),并授予其访问数据库的权限


如果您无权访问PHPMyAdmin中的“特权”部分,则必须联系数据库的宿主。

这本身不太可能是PHP问题,但很可能是数据库服务器上的某个东西阻止了连接

按此顺序尝试以下操作,在每个步骤后运行代码:

新MySQL用户

  • 通过PHPMyAdmin添加新的数据库用户
  • 转到特权,然后添加用户
  • 可以将主机设置为“%”(通配符-允许所有服务器访问。这不太安全,但可以在以后加强)
  • 填写用户名和密码,然后在PHP中使用 代码
  • 请重试您的代码
数据库服务器

在数据库服务器上,要求系统管理员编辑/etc/mysql/my.cnf(假设这是一台Linux机器,其中my.cnf存储在这个位置——您的系统管理员将知道如何找到正确的文件)

  • 在行首使用#字符注释掉“bind address=127.0.0.1”和“skip networking”(如果有)部分
  • 保存文件
  • 重新启动MySQL服务(服务MySQL重新启动)
  • 请重试您的代码
防火墙

如果上述步骤不起作用,那么很可能是防火墙阻止了连接

  • 在服务器上,允许端口3306接受传入连接
  • 如果存在共享防火墙设备或云托管合作伙伴(如AWS)具有防火墙,则允许端口3306
  • 请重试您的代码

请注意,如果MySQL服务器的系统管理员不想打开防火墙上的端口或启用到数据库的外部连接,那么您可以做的事情不多

FTP不是数据库。。。而且数据库不可能真正“在ftp上”。请澄清。不管怎样,如果我使用hostex.lt,我只需要知道使用什么以及如何使用,而不是“localhost”将此添加到PHP文件的顶部:
error\u reporting(E\u ALL);ini设置(“显示错误”,1)。也许一些错误信息会有所帮助。我用错误截图编辑了我的问题。你是否允许远程访问你的数据库,将你的IP列为白色?