Поделиться через


Использование PHP с База данных Azure для MySQL — гибкий сервер

В этом кратком руководстве показано, как подключиться к гибкому серверу Базы данных Azure для MySQL с помощью приложения PHP . Здесь также показано, как использовать инструкции SQL для запроса, вставки, обновления и удаления данных в базе данных. В этой статье предполагается, что вы знакомы с разработкой на PHP, но только начинаете работать с гибким сервером базы данных Azure для MySQL.

Необходимые компоненты

В качестве отправной точки в этом кратком руководстве используются ресурсы, созданные в соответствии со следующими материалами:

Подготовка клиентской рабочей станции

  1. Если вы создали гибкий сервер с частным доступом (интеграция с виртуальной сетью), необходимо подключиться к серверу из ресурса в той же виртуальной сети, что и сервер. Например, можно создать виртуальную машину и добавить ее в виртуальную сеть, созданную для гибкого сервера. Сведения о создании виртуальных сетей и управлении ими для База данных Azure для MySQL — гибкий сервер с помощью Azure CLI.

  2. Если вы создали гибкий сервер в режиме Открытый доступ (разрешенные IP-адреса), вы можете добавить локальный IP-адрес в список правил брандмауэра на этом сервере. См. инструкции по управлению правилами брандмауэра для База данных Azure для MySQL — гибкий сервер с помощью Azure CLI.

Установка PHP

Установите PHP на своем сервере или создайте веб-приложение Azure с PHP. Дополнительные сведения см. в статье о создании правил брандмауэра и управлении ими.

  1. Скачайте PHP версии 7.1.4.
  2. Установите PHP и выполните настройку согласно инструкциям в руководстве по PHP.

Получение сведений о подключении

Получите сведения о подключении, необходимые для подключения к экземпляру гибкого сервера База данных Azure для MySQL. Вам потребуется полное имя сервера и учетные данные для входа.

  1. Войдите на портал Azure.

  2. В меню слева на портале Azure выберите все ресурсы и найдите созданный сервер (в следующих примерах замените <server> допустимым значением).

  3. Выберите имя сервера.

  4. Запишите имя сервера и имя для входа администратора сервера с панели сервера Обзор. Если вы забыли свой пароль, можно также сбросить пароль с помощью этой панели.

Подключение к гибкому серверу с помощью TLS/SSL в PHP

Чтобы установить зашифрованное подключение к гибкому серверу через TLS/SSL из приложения, ознакомьтесь со следующими примерами кода. Вы можете скачать сертификат, необходимый для обмена данными по протоколу TLS/SSL https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem.

Замените значения параметров $host, $username, $password и $db_name своими значениями.

<?php
$conn = mysqli_init();
mysqli_ssl_set(
    $conn,
    null,
    null,
    "/var/www/html/DigiCertGlobalRootCA.crt.pem",
    null,
    null
);
mysqli_real_connect(
    $conn,
    "<server>.mysql.database.azure.com",
    "<username>",
    "<password>",
    "<database>",
    3306,
    MYSQLI_CLIENT_SSL
);
if (mysqli_connect_errno($conn)) {
    die("Failed to connect to MySQL: " . mysqli_connect_error());
}
?>

Подключение и создание таблицы

Используйте следующий код для подключения и создания таблицы с помощью CREATE TABLE инструкции SQL.

В коде используется класс улучшенного расширения MySQL (mysqli), включенный в PHP. Код вызывает методы mysqli_init и mysqli_real_connect, чтобы подключиться к MySQL. Затем код вызывает метод mysqli_query для выполнения запроса и метод mysqli_close, чтобы разорвать подключение.

Вы также можете подключиться к базе данных Azure для MySQL с помощью объектно-ориентированного интерфейса, предоставленного расширением mysqli .

Замените значения параметров $host, $username, $password и $db_name своими значениями.

<?php
$host = "<server>.mysql.database.azure.com";
$username = "<username>";
$password = "<password>";
$db_name = "<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 created\n");
}

//Close the connection
mysqli_close($conn);
?>

Вставка данных

Используйте следующий код для подключения и вставки данных с помощью инструкции INSERT SQL.

В коде используется класс улучшенного расширения MySQL (mysqli), включенный в PHP. Метод mysqli_prepare используется для создания подготовленной инструкции INSERT, а затем с помощью метода mysqli_stmt_bind_param привязываются параметры для каждого вставленного значения столбца. Код выполняет инструкцию, используя метод mysqli_stmt_execute, и закрывает ее с помощью метода mysqli_stmt_close.

Вы также можете подключиться к базе данных Azure для MySQL с помощью объектно-ориентированного интерфейса, предоставленного расширением mysqli .

Замените значения параметров $host, $username, $password и $db_name своими значениями.

<?php
$host = "<server>.mysql.database.azure.com";
$username = "<username>";
$password = "<password>";
$db_name = "<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());
}

//Create an Insert prepared statement and run it
$product_name = "BrandNewProduct";
$product_color = "Blue";
$product_price = 15.5;
if (
    $stmt = mysqli_prepare(
        $conn,
        "INSERT INTO Products (ProductName, Color, Price) VALUES (?, ?, ?)"
    )
) {
    mysqli_stmt_bind_param(
        $stmt,
        "ssd",
        $product_name,
        $product_color,
        $product_price
    );
    mysqli_stmt_execute($stmt);
    printf("Insert: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
    mysqli_stmt_close($stmt);
}

// Close the connection
mysqli_close($conn);
?>

Чтение данных

Используйте указанный ниже код с инструкцией SQL SELECT для подключения и чтения данных. В коде используется класс улучшенного расширения MySQL (mysqli), включенный в PHP. В коде используется метод mysqli_query для выполнения SQL-запроса и метод mysqli_fetch_assoc для получения результирующих строк.

Вы также можете подключиться к базе данных Azure для MySQL с помощью объектно-ориентированного интерфейса, предоставленного расширением mysqli .

Замените значения параметров $host, $username, $password и $db_name своими значениями.

<?php
$host = "<server>.mysql.database.azure.com";
$username = "<username>";
$password = "<password>";
$db_name = "<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 Select query
printf("Reading data from table: \n");
$res = mysqli_query($conn, "SELECT * FROM Products");
while ($row = mysqli_fetch_assoc($res)) {
    var_dump($row);
}

//Close the connection
mysqli_close($conn);
?>

Обновление данных

Используйте следующий код для подключения и обновления данных с помощью инструкции UPDATE SQL.

В коде используется класс улучшенного расширения MySQL (mysqli), включенный в PHP. Метод mysqli_prepare используется для создания подготовленной инструкции UPDATE, а затем с помощью метода mysqli_stmt_bind_param привязываются параметры для каждого обновленного значения столбца. Код выполняет инструкцию, используя метод mysqli_stmt_execute, и закрывает ее с помощью метода mysqli_stmt_close.

Вы также можете подключиться к базе данных Azure для MySQL с помощью объектно-ориентированного интерфейса, предоставленного расширением mysqli .

Замените значения параметров $host, $username, $password и $db_name своими значениями.

<?php
$host = "<server>.mysql.database.azure.com";
$username = "<username>";
$password = "<password>";
$db_name = "<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 Update statement
$product_name = "BrandNewProduct";
$new_product_price = 15.1;
if (
    $stmt = mysqli_prepare(
        $conn,
        "UPDATE Products SET Price = ? WHERE ProductName = ?"
    )
) {
    mysqli_stmt_bind_param($stmt, "ds", $new_product_price, $product_name);
    mysqli_stmt_execute($stmt);
    printf("Update: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));

    //Close the connection
    mysqli_stmt_close($stmt);
}

mysqli_close($conn);

?>

Удаление данных

Используйте указанный ниже код с инструкцией SQL DELETE для подключения и чтения данных.

В коде используется класс улучшенного расширения MySQL (mysqli), включенный в PHP. Метод mysqli_prepare используется для создания подготовленной инструкции DELETE, а затем с помощью метода mysqli_stmt_bind_param привязываются параметры для предложения WHERE в инструкции. Код выполняет инструкцию, используя метод mysqli_stmt_execute, и закрывает ее с помощью метода mysqli_stmt_close.

Вы также можете подключиться к базе данных Azure для MySQL с помощью объектно-ориентированного интерфейса, предоставленного расширением mysqli .

Замените значения параметров $host, $username, $password и $db_name своими значениями.

<?php
$host = "<server>.mysql.database.azure.com";
$username = "<username>";
$password = "<password>";
$db_name = "<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 Delete statement
$product_name = "BrandNewProduct";
if (
    $stmt = mysqli_prepare($conn, "DELETE FROM Products WHERE ProductName = ?")
) {
    mysqli_stmt_bind_param($stmt, "s", $product_name);
    mysqli_stmt_execute($stmt);
    printf("Delete: Affected %d rows\n", mysqli_stmt_affected_rows($stmt));
    mysqli_stmt_close($stmt);
}

//Close the connection
mysqli_close($conn);
?>