Azure Database for MySQL - フレキシブル サーバーで PHP を使用する

適用対象: Azure Database for MySQL - フレキシブル サーバー

このクイックスタートでは、PHP アプリケーションを使用して Azure Database for MySQL フレキシブル サーバーに接続する方法について説明します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 この記事では、PHP を使用した開発に慣れ親しんでおり、Azure Database for MySQL フレキシブル サーバーを初めて使用することを前提としています。

前提条件

このクイックスタートでは、次のいずれかのガイドで作成されたリソースを出発点として使用します。

クライアント ワークステーションを準備する

  1. "プライベート アクセス (VNet 統合) " を指定してフレキシブル サーバーを作成した場合は、サーバーと同じ VNet 内のリソースからサーバーに接続する必要があります。 仮想マシンを作成し、それをフレキシブル サーバーと共に作成された VNet に追加できます。 Azure CLI を使用した Azure Database for MySQL フレキシブル サーバー仮想ネットワークの作成と管理に関するページを参照してください。

  2. "パブリック アクセス (使用できる IP アドレス) " を指定してフレキシブル サーバーを作成した場合は、サーバー上のファイアウォール規則のリストにローカル IP アドレスを追加できます。 Azure CLI を使用した Azure Database for MySQL フレキシブル サーバー ファイアウォール規則の作成と管理に関するページを参照してください。

PHP のインストール

独自のサーバーに PHP をインストールするか、PHP が含まれた Azure Web アプリを作成します。 ファイアウォール規則の作成方法については、「ファイアウォール規則の作成および管理」を参照してください。

  1. PHP 7.1.4 バージョンをダウンロードします。
  2. PHP をインストールし、さらなる構成については PHP マニュアルを参照します。

接続情報の取得

Azure Database for MySQL フレキシブル サーバー インスタンスに接続するために必要な接続情報を取得します。 完全修飾サーバー名とサインイン資格情報が必要です。

  1. Azure portal にサインインします。
  2. Azure portal の左側のメニューにある [すべてのリソース] を選択し、作成したサーバー (例: mydemoserver) を検索します。
  3. サーバー名を選択します。
  4. サーバーの [概要] パネルから、 [サーバー名][サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。

PHP で TLS/SSL を使用してフレキシブル サーバーに接続する

アプリケーションから TLS/SSL 経由でフレキシブル サーバーへの暗号化された接続を確立するには、次のコード サンプルを参照してください。 TLS/SSL 経由で通信するために必要な証明書は、https://dl.cacerts.digicert.com/DigiCertGlobalRootCA.crt.pem からダウンロードできます。

$conn = mysqli_init();
mysqli_ssl_set($conn,NULL,NULL, "/var/www/html/DigiCertGlobalRootCA.crt.pem", NULL, NULL);
mysqli_real_connect($conn, 'mydemoserver.mysql.database.azure.com', 'myadmin', 'yourpassword', 'quickstartdb', 3306, MYSQLI_CLIENT_SSL);
if (mysqli_connect_errno($conn)) {
die('Failed to connect to MySQL: '.mysqli_connect_error());
}

接続とテーブルの作成

接続し、CREATE TABLE SQL ステートメントを使用してテーブルを作成するには、次のコードを使用します。

このコードでは、PHP に含まれている MySQL Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_init メソッドと mysqli_real_connect メソッドを呼び出して MySQL に接続します。 次に、mysqli_query メソッドを呼び出してクエリを実行します。 その後、mysqli_close メソッドを呼び出して接続を閉じます。

host、username、password、db_name の各パラメーターは実際の値に置き換えてください。

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

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

データの挿入

接続し、INSERT SQL ステートメントを使用してデータを挿入するには、次のコードを使用します。

このコードでは、PHP に含まれている MySQL Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_prepare メソッドを使用して、準備済みの INSERT ステートメントを作成した後、mysqli_stmt_bind_param メソッドを使用して、挿入される列の値ごとにパラメーターをバインドします。 このコードでは、mysqli_stmt_execute メソッドでステートメントを実行してから、mysqli_stmt_close メソッドでステートメントを閉じます。

host、username、password、db_name の各パラメーターは実際の値に置き換えてください。

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$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());
}

//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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_query メソッドを使用して SQL クエリを実行し、mysqli_fetch_assoc メソッドを使用して結果の行をフェッチします。

host、username、password、db_name の各パラメーターは実際の値に置き換えてください。

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$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 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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_prepare メソッドを使用して、準備済みの UPDATE ステートメントを作成し、mysqli_stmt_bind_param メソッドを使用して、更新される列の値ごとにパラメーターをバインドします。 このコードでは、mysqli_stmt_execute メソッドでステートメントを実行してから、mysqli_stmt_close メソッドでステートメントを閉じます。

host、username、password、db_name の各パラメーターは実際の値に置き換えてください。

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$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 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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_prepare メソッドを使用して、準備済みの DELETE ステートメントを作成し、mysqli_stmt_bind_param メソッドを使用して、ステートメント内の WHERE 句のパラメーターをバインドします。 このコードでは、mysqli_stmt_execute メソッドでステートメントを実行してから、mysqli_stmt_close メソッドでステートメントを閉じます。

host、username、password、db_name の各パラメーターは実際の値に置き換えてください。

<?php
$host = 'mydemoserver.mysql.database.azure.com';
$username = 'myadmin';
$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 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);
?>

次のステップ