#php #database-connection #azure-sql-database
#php #подключение к базе данных #azure-sql-database
Вопрос:
Я использую «mysql-in-app» службы приложений в azure.Я хочу добавлять, удалять, редактировать и просматривать данные с помощью страницы обслуживания. Для этого я написал php-код. Я не могу подключиться к базе данных mysql.
Я попробовал это локально для локальной базы данных, используя ->
$conn = mysqli_connect('127.0.0.1','root','','samdb');
он работает нормально.
Но я пытаюсь подключиться к azure db, используя это->
$conn = mysqli_connect('127.0.0.1:50721','azure','6#vWHD_$','localdb');
здесь он не работает.,
Ответ №1:
Сначала вам нужно получить информацию о подключении, необходимую для подключения к базе данных Azure для MySQL. Вам нужно полное имя сервера и учетные данные для входа.
Используйте следующий код для подключения и создания таблицы с помощью инструкции CREATE TABLE SQL.
В коде используется класс улучшенного расширения MySQL (mysqli), включенный в PHP. Код вызывает методы mysqli_init и mysqli_real_connect для подключения к MySQL. Затем он вызывает метод mysqli_query для выполнения запроса. Затем он вызывает метод mysqli_close, чтобы закрыть соединение.
Замените параметры host, username, password и db_name вашими собственными значениями.
<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin@mydemoserver';
$password = 'your_password';
$db_name = 'your_database';
//Establishes the connection
$conn = mysqli_init();
mysqli_real_connect($conn, $host, $username, $password, $db_name, 3306);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}
// Run the create table query
if (mysqli_query($conn, '
CREATE TABLE Products (
`Id` INT NOT NULL AUTO_INCREMENT ,
`ProductName` VARCHAR(200) NOT NULL ,
`Color` VARCHAR(50) NOT NULL ,
`Price` DOUBLE NOT NULL ,
PRIMARY KEY (`Id`)
);
')) {
printf("Table createdn");
}
//Close the connection
mysqli_close($conn);
?>
Ответ №2:
Вот пример кода, использующего MySQL в приложении, чтобы получить строку подключения к базе данных и подключиться к базе данных:
$connectstr_dbhost = '';
$connectstr_dbname = '';
$connectstr_dbusername = '';
$connectstr_dbpassword = '';
foreach ($_SERVER as $key => $value) {
if (strpos($key, "MYSQLCONNSTR_localdb") !== 0) {
continue;
}
$connectstr_dbhost = preg_replace("/^.*Data Source=(. ?);.*$/", "\1", $value);
$connectstr_dbname = preg_replace("/^.*Database=(. ?);.*$/", "\1", $value);
$connectstr_dbusername = preg_replace("/^.*User Id=(. ?);.*$/", "\1", $value);
$connectstr_dbpassword = preg_replace("/^.*Password=(. ?)$/", "\1", $value);
}
$link = mysqli_connect($connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword,$connectstr_dbname);
Для получения более подробной информации вы можете ознакомиться с этим руководством: Объявление MySQL в приложении для веб-приложений (Windows)
Вы также можете получить эту строку подключения в Azure protal:
Пожалуйста, смотрите: База данных Azure для MySQL: используйте PHP для подключения и запроса данных.
Таким образом, ваш код может быть таким, и вы можете попробовать еще раз:
$connectstr_dbhost = 'mydemoserver.mysql.database.azure.com';
$connectstr_dbname = 'myadmin@mydemoserver';
$connectstr_dbusername = 'your_password';
$connectstr_dbpassword = 'your_database';
$conn = mysqli_connect($connectstr_dbhost, $connectstr_dbusername, $connectstr_dbpassword,$connectstr_dbname);
Надеюсь, это поможет.
Комментарии:
1. Это отличается от того, что я спрашивал. Я добавил phpMyAdmin в службу приложений, используя расширение в службе приложений. Я не использовал отдельный сервис для mysql.
Ответ №3:
Попробуйте указать порт отдельно следующим образом:
$conn = mysqli_connect('127.0.0.1','azure','6#vWHD_$','localdb', '50721');