无法将PHP连接到bluemix中的db2

时间:2015-09-08 08:05:31

标签: php db2 ibm-cloud

我对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,但它无效。

2 个答案:

答案 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中作为调试输出,看看如何获​​得正确的服务器/端口/用户/密码。