Не удалось подключить PHP к db2 в bluemix


Я очень новичок в программировании на PHP, а также в bluemix. Я искал подключение к PHP для bluemix. Для этого я создал базу данных SQL (база данных DB2) в Bluemix и также привязал ее к своему приложению. Затем получил учетные данные и использовал их в php, используя db2_connect(). Это не сработало, и не удалось восстановить соединение.

После этого я получил следующее:

$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);

Мой вопрос в том, должен ли я заменить mysql на db2? Или он будет работать так, просто изменив mysql-5.5 на sqldb?

Я также использовал db2_connect и это не работает.

Author: Logan Wayne, 2015-09-08

2 answers

Для подключения к службе SQLDB в Bluemix вы должны использовать db2_connect, а не mysql_connect, документы здесь. Поскольку это удаленная база данных, вы должны использовать строку подключения, а не отдельные параметры имени базы данных, имени пользователя.

Вот пример того, как анализировать службы VCAP_SERVICES и подключаться к службе SQLDB на PHP:

# 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, '', '');
 3
Author: whitfiea, 2015-09-08 15:56:59

Вы не должны использовать $mysql_connect, это специфично для MySQL. Используйте $db2_connect, см. документы для ссылок.

Кроме того, вы, скорее всего, используете неправильные учетные данные (или: вместо этого пустой объект). Проверьте имя службы в консоли Bluemix (разверните учетные данные службы под экземпляром службы на экране приложения): скорее всего, это , а не "mysql-5.5". Я рекомендую вам просто распечатать $vcap_services на консоль или в качестве отладочного вывода в вашем HTML-файле и посмотреть, как это выглядит чтобы получить правильный сервер/порт/пользователя/пароль.

 0
Author: herchu, 2015-09-08 14:13:03