如何使用php连接远程mysql数据库(托管在dotCloud上)

2024-01-14

我无法连接到位于 dotCloud 上的数据库。我试过:

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);

and

$mysqli = mysqli_connect($db_host, $db_user, $db_password, $db_name);

and

$mysqli = new mysqli($remote_server, $db_user, $db_password, $db_name);

and

$mysqli = mysqli_connect($remote_server, $db_user, $db_password, $db_name);

但它无法连接,并且我收到“错误 324 (net::ERR_EMPTY_RESPONSE):服务器关闭了连接而不发送任何数据。”

我使用以下命令动态检索 mysqli 脚本上方的变量:

$env =  json_decode(file_get_contents("/home/dotcloud/environment.json"));
$db_user = $env->DOTCLOUD_DB_MYSQL_LOGIN;
$db_password = $env->DOTCLOUD_DB_MYSQL_PASSWORD; 
$db_host = $env->DOTCLOUD_DB_MYSQL_HOST;
$db_port = $env->DOTCLOUD_DB_MYSQL_PORT;
$remote_server = '$db_host:$db_port';
//I also define $db_name here
$db_name = 'mydbname';

我在 mysqli 脚本下面还有以下代码:

if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
    $result["status"] = "failed";
    $result["message"] = "Failed to connect to database.";
    echo json_encode($result);
    exit;
} else {
    // Successfully connected!
    $stmt = $mysqli->stmt_init();
    echo "<p>Successfully connected!!</p>";
}

我究竟做错了什么?


您的代码中有一些错误。

1.您的 $remote_server 变量使用单引号

$remote_server = '$db_host:$db_port';

这意味着 $remote_server 不会扩展 $db_host 和 $db_port 变量。您应该使用双引号。如果您按原样使用该变量,它对您不起作用。

$remote_server = "$db_host:$db_port";

请参阅此页面了解更多信息:http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single http://www.php.net/manual/en/language.types.string.php#language.types.string.syntax.single

2. 连接时没有使用 mysql 端口,这是 dotCloud 上必需的,因为它不在标准端口 3306 上运行 mysql。

你的代码:

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name);

正确的代码,使用上面已经声明的变量:

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name, $db_port);

更多信息可以在这里找到:http://www.php.net/manual/en/mysqli.quickstart.connections.php http://www.php.net/manual/en/mysqli.quickstart.connections.php

对于一个完整的例子,它看起来像这样。

$env =  json_decode(file_get_contents("/home/dotcloud/environment.json"));
$db_user = $env->DOTCLOUD_DB_MYSQL_LOGIN;
$db_password = $env->DOTCLOUD_DB_MYSQL_PASSWORD; 
$db_host = $env->DOTCLOUD_DB_MYSQL_HOST;
$db_port = $env->DOTCLOUD_DB_MYSQL_PORT;
//I also define $db_name here
$db_name = 'mydbname';

$mysqli = new mysqli($db_host, $db_user, $db_password, $db_name, $db_port);
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: (" . $mysqli->connect_errno . ") " . $mysqli->connect_error;
}

echo $mysqli->host_info . "\n";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用php连接远程mysql数据库(托管在dotCloud上) 的相关文章

随机推荐