次の方法で共有


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

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

前提条件

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

クライアント ワークステーションを構成する

  1. プライベート アクセス (仮想ネットワーク統合) を使用してフレキシブル サーバーを作成した場合は、サーバーと同じ仮想ネットワーク内のリソースからサーバーに接続する必要があります。 仮想マシンを作成し、フレキシブル サーバーと共に作成された仮想ネットワークに追加できます。 「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)) {f
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);
?>