从BlueMix上的PHP应用程序连接到多个DB2实例


Connecting to more than one instance of DB2 from a PHP app on BlueMix

如何使用连接到db2db…的代码。。。。

//解析VCAP_SERVICES环境变量

$vcap_services = $_ENV["VCAP_SERVICES"];
$services_json = json_decode($vcap_services,true);
$sqldb = $services_json["sqldb"];
if (empty($sqldb)) {
    echo "No sqldb service instance is bound. Please bind a sqldb service instance";
    return;
}
//Get Credentials object (db,host,port,username,password)
$sqldb_config = $services_json["sqldb"][0]["credentials"];
$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"].
   ";";

$conn = db2_connect($conn_string, '', ''); //db connection 

要连接到1 db以上。。。当然不是在同一时间。

或者。。。如果可能的话。。。我可以有多个模式吗?

基本上。。。我会把客户数据放在那里。。。每个客户端都将拥有相同名称的相同表。。。和类似的数据结构。所以我需要把它们分开。。。在不同的数据库或不同的模式中。但是我得到的代码会自动连接到我的db2实例。。。我如何告诉代码要连接到哪个实例…如果我有更多。。。

假设您的应用程序绑定了许多SQL数据库服务实例。现在,如果你运行:

$services_json["sqldb"]

它将为每个SQL DB实例返回一个包含一个元素的数组。要指向一个特定的实例,您可以执行以下操作:

$sqldb_config = $services_json["sqldb”][i]

其中i是所需服务的索引。我建议您在Bluemix上的应用程序面板中查看VCAP_SERVICES环境变量的值。在那里,您将看到绑定到应用程序的所有SQLDB服务实例的列表。