我对PHP编程和bluemix也很陌生。我一直在寻找连接PHP到bluemix。为此我在Bluemix中创建了SQL DB(DB2数据库)并将其绑定到我的应用程序。然后获得凭据并使用db2_connect()
在php中使用它。它没有工作,返回连接失败。
之后我得到了这个:
$vcap_services = json_decode($_ENV["VCAP_SERVICES" ]); $db = $vcap_services->{'mysql-5.5'}[0]->credentials; $mysql_database = $db->name; $mysql_port=$db->port; //$mysql_server_name ='${db->host}:${db->port}'; $mysql_server_name =$db->host . ':' . $db->port; $mysql_username = $db->username; $mysql_password = $db->password;
$con = mysql_connect($mysql_server_name, $mysql_username, $mysql_password);
我的问题是,我应该用db2替换mysql吗?或者它会像这样运行只是将mysql-5.5更改为sqldb?
我也使用了db2_connect
,但它无效。
答案 0 :(得分:3)
要在Bluemix中连接到SQLDB服务,您必须使用db2_connect
而不是mysql_connect
,文档为here。由于这是一个远程数据库,因此您必须使用连接字符串而不是单独的databaseName,userName参数。
以下是如何在PHP中解析VCAP_SERVICES并连接到SQLDB服务的示例:
# Decode JSON and gather DB Info
$services_json = json_decode($json,true);
$sqldb = $services_json["sqldb"];
if (empty($sqldb)) {
echo "No sqldb service instance is bound. Please bind a sqldb service instance";
return;
}
$sqldb_config = $services_json["sqldb"][0]["credentials"];
// create DB connect string
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=".
$sqldb_config["db"].
";HOSTNAME=".
$sqldb_config["host"].
";PORT=".
$sqldb_config["port"].
";PROTOCOL=TCPIP;UID=".
$sqldb_config["username"].
";PWD=".
$sqldb_config["password"].
";";
// connect to database
$conn = db2_connect($conn_string, '', '');
答案 1 :(得分:0)
您不应该使用$mysql_connect
,这是特定于MySQL的。使用$db2_connect
,请参阅the docs以获取参考信息。
此外,您最有可能使用错误的凭据(或者:使用空对象)。从Bluemix控制台检查服务名称(在应用程序屏幕中的服务实例下展开服务凭据):很可能是不“mysql-5.5”。我建议您只需将$vcap_services
打印到控制台或HTML中作为调试输出,看看如何获得正确的服务器/端口/用户/密码。