Не удалось подключить 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
и это не работает.
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, '', '');
Вы не должны использовать $mysql_connect
, это специфично для MySQL. Используйте $db2_connect
, см. документы для ссылок.
Кроме того, вы, скорее всего, используете неправильные учетные данные (или: вместо этого пустой объект). Проверьте имя службы в консоли Bluemix (разверните учетные данные службы под экземпляром службы на экране приложения): скорее всего, это , а не "mysql-5.5". Я рекомендую вам просто распечатать $vcap_services
на консоль или в качестве отладочного вывода в вашем HTML-файле и посмотреть, как это выглядит чтобы получить правильный сервер/порт/пользователя/пароль.