共用方式為


將 PHP 用於適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

本快速入門示範如何使用 PHP 應用程式連線到適用於 MySQL 的 Azure 資料庫彈性伺服器。 它會顯示如何使用 SQL 陳述式來查詢、插入、更新和刪除資料庫中的資料。 本文假設您已熟悉使用 PHP 進行開發,並且對 Azure Database for MySQL 的靈活伺服器不太熟悉。

必要條件

本快速入門使用在以下任一指南中建立的資源作為起點︰

準備您的用戶端工作站

  1. 如果您使用 私人存取(虛擬網路整合)建立彈性伺服器,則必須從與伺服器相同的虛擬網路內的資源連線到您的伺服器。 您可以建立虛擬機,並將其新增至使用彈性伺服器建立的虛擬網路。 請參閱使用 Azure CLI 建立和管理 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的虛擬網路。

  2. 如果您使用公用存取 (允許的 IP 位址)建立彈性伺服器,可以將本機 IP 位址新增至伺服器上的防火牆規則清單。 請參閱使用 Azure CLI 管理 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器的防火牆規則。

安裝 PHP

在自己的伺服器上安裝 PHP,或建立 Azure Web 應用程式 (包括 PHP)。 如需詳細資訊,請參閱 建立和管理防火牆規則

  1. 下載 PHP 7.1.4 版本
  2. 安裝 PHP 並參考 PHP 手冊以便進一步設定。

取得連線資訊

取得連線到適用於 MySQL 的 Azure 資料庫彈性伺服器執行個體所需的連線資訊。 您需要完整的伺服器名稱和登入認證。

  1. 登入 Azure 入口網站

  2. 從 Azure 入口網站的左側功能表中,選取 [ 所有資源],然後搜尋您已建立的伺服器(在下列範例中,將 取代 <server> 為有效的值)。

  3. 選取伺服器名稱。

  4. 從伺服器的 [概觀] 面板,記下 [伺服器名稱] 和 [伺服器管理員登入名稱]。 如果您忘記密碼,您也可以從此面板重設密碼。

在 PHP 中使用 TLS/SSL 連線到彈性伺服器

若要從您的應用程式透過 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 語句。

程式碼會使用 PHP 內含的 MySQL 改良擴充功能 (mysqli) 類別。 程式碼會呼叫 mysqli_initmysqli_real_connect 方法來連線到 MySQL。 然後它會呼叫 mysqli_query 方法來執行查詢。 然後它會呼叫 mysqli_close 方法來關閉連線。

您也可以使用 mysqli 擴充功能所提供的面向物件介面來連線到適用於 MySQL 的 Azure 資料庫。

以您自己的值取代 $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 語句。

程式碼會使用 PHP 內含的 MySQL 改良擴充功能 (mysqli) 類別。 程式碼會使用 mysqli_prepare 方法來建立已備妥的 insert 陳述式,然後使用 mysqli_stmt_bind_param 方法來繫結每個插入資料行值的參數。 程式碼會使用 mysqli_stmt_execute 方法執行陳述式,之後使用 mysqli_stmt_close 方法關閉陳述式。

您也可以使用 mysqli 擴充功能所提供的面向物件介面來連線到適用於 MySQL 的 Azure 資料庫。

以您自己的值取代 $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);
?>

讀取資料

使用下列程式碼搭配 SELECT SQL 陳述式來連線和讀取資料。 程式碼會使用 PHP 內含的 MySQL 改良擴充功能 (mysqli) 類別。 程式碼會使用 mysqli_query 方法執行 SQL 查詢,並使用 mysqli_fetch_assoc 方法來擷取結果資料列。

您也可以使用 mysqli 擴充功能所提供的面向物件介面來連線到適用於 MySQL 的 Azure 資料庫。

以您自己的值取代 $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 語句。

程式碼會使用 PHP 內含的 MySQL 改良擴充功能 (mysqli) 類別。 程式碼會使用 mysqli_prepare 方法來建立已備妥的 update 陳述式,然後使用 mysqli_stmt_bind_param 方法來繫結每個更新資料行值的參數。 程式碼會使用 mysqli_stmt_execute 方法執行陳述式,之後使用 mysqli_stmt_close 方法關閉陳述式。

您也可以使用 mysqli 擴充功能所提供的面向物件介面來連線到適用於 MySQL 的 Azure 資料庫。

以您自己的值取代 $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);

?>

刪除資料

使用下列程式碼搭配 DELETE SQL 陳述式來連線和讀取資料。

程式碼會使用 PHP 內含的 MySQL 改良擴充功能 (mysqli) 類別。 程式碼會使用 mysqli_prepare 方法來建立已備妥的 delete 陳述式,然後使用 mysqli_stmt_bind_param 方法來繫結陳述式中 where 子句的參數。 程式碼會使用 mysqli_stmt_execute 方法執行陳述式,之後使用 mysqli_stmt_close 方法關閉陳述式。

您也可以使用 mysqli 擴充功能所提供的面向物件介面來連線到適用於 MySQL 的 Azure 資料庫。

以您自己的值取代 $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);
?>