PHP mysqli连接到远程数据库

时间:2012-11-27 02:19:39

标签: php mysqli

第一次尝试连接到与我的网站不在同一主机上的数据库而且没有太多运气。数据库位于godaddy主机上,我已将其配置为允许远程访问:

$dbc = mysqli_connect($db_host,$db_user,$db_pass,$db_name);

if (!$dbc) {
    die('Connect Error: ' . mysqli_connect_error());
}

我在页面上看到以下内容:

  

警告:mysqli_connect()[function.mysqli-connect]:[2002]连接   超时(试图通过'mydbhostname:3306连接)在'路径'在线   3

     

警告:mysqli_connect()[function.mysqli-connect] :( HY000 / 2002):   连接在第3行的“路径”中超时

     

连接错误:连接超时

我需要在我的结尾或脚本中寻找可能导致此问题的任何内容吗?

编辑:好吧,当我使用mysql时,一切正常,但不是mysqli ......并且在服务器上启用了mysqli。

3 个答案:

答案 0 :(得分:1)

我在Digitalocean Ubuntu 14.04服务器上遇到了同样的问题,防火墙配置是罪魁祸首。 ufw防火墙规则不允许在端口3306上使用Mysql。

解决方案:

$ sudo ufw status
$ sudo ufw allow mysql
$ sudo ufw reload

答案 1 :(得分:0)

确保您为数据库插入了正确的主机名,在这里您可以看到如何在godaddy主机上执行此操作:

答案 2 :(得分:-1)

我不明白mysqli和mysql之间的区别,但我在GoDaddy上发现使用:

mysqli_connect不起作用。 mysql_connect确实有用。

尝试使用以下示例代码查看您是否可以连接到至少需要一个表中需要数据的数据库:

<?php
//Variables for connecting to your database.
//These variable values come from your hosting account.
$hostname = "XXXXXXX.db.XXXXXXXX.hostedresource.com";
$username = "XXXXXXX";
$dbname = "XXXXXXX";

//These variable values need to be changed by you before deploying
$password = "XXXXXXX";
$usertable = "XXXXXXX";
$yourfield = "XXXXXXX";

//Connecting to your database
mysql_connect($hostname, $username, $password) OR DIE ("Unable to
connect to database! Please try again later.");
mysql_select_db($dbname);

//Fetching from your database table.
$query = "SELECT * FROM $usertable";
$result = mysql_query($query);

if ($result) {
    while($row = mysql_fetch_array($result)) {
        $name = $row["$yourfield"];
        echo "<h2>some data</h2>";
        echo "$name<br>";
    }
}
?>