您的代码中有一些错误。
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";