このクイックスタートでは、 PHP アプリケーションを使用して Azure Database for MySQL フレキシブル サーバーに接続する方法について説明します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 この記事では、PHP を使用した開発に慣れているものと、Azure Database for MySQL フレキシブル サーバーを初めて使用することを前提としています。
前提条件
このクイックスタートでは、次のいずれかのガイドで作成されたリソースを出発点として使用します。
- クイック スタート: Azure portal を使用して Azure Database for MySQL のインスタンスを作成する
- クイックスタート: Azure CLI を使用して Azure Database for MySQL - フレキシブル サーバーのインスタンスを作成する
クライアント ワークステーションを構成する
プライベート アクセス (仮想ネットワーク統合) を使用してフレキシブル サーバーを作成した場合は、サーバーと同じ仮想ネットワーク内のリソースからサーバーに接続する必要があります。 仮想マシンを作成し、フレキシブル サーバーと共に作成された仮想ネットワークに追加できます。 「Azure CLI を使用して Azure Database for MySQL - フレキシブル サーバーの仮想ネットワークを作成し管理する」を参照してください。
"パブリック アクセス (使用できる IP アドレス) " を指定してフレキシブル サーバーを作成した場合は、サーバー上のファイアウォール規則のリストにローカル IP アドレスを追加できます。 「Azure CLI を使用して、Azure Database for MySQL - フレキシブル サーバーのファイアウォール規則を管理する」を参照してください。
PHP のインストール
独自のサーバーに PHP をインストールするか、PHP が含まれた Azure Web アプリを作成します。 詳細については、 ファイアウォール規則の作成と管理に関するページを参照してください。
- PHP 7.1.4 バージョンをダウンロードします。
- PHP をインストールし、さらなる構成については PHP マニュアルを参照します。
接続情報の取得
Azure Database for MySQL フレキシブル サーバー インスタンスに接続するために必要な接続情報を取得します。 完全修飾サーバー名とサインイン資格情報が必要です。
Azure portal にサインインします。
Azure portal の左側のメニューで 、[ すべてのリソース] を選択し、作成したサーバーを検索します (次の例では、
<server>
を有効な値に置き換えます)。サーバー名を選択します。
サーバーの [概要] パネルから、 [サーバー名] と [サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。
PHP で TLS/SSL を使用してフレキシブル サーバーに接続する
アプリケーションから TLS/SSL 経由でフレキシブル サーバーへの暗号化された接続を確立するには、次のコード サンプルを参照してください。 から TLS/SSL 経由で通信するために必要な証明書をダウンロードできます。
$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());
}
?>
接続とテーブルの作成
次のコードを使用して接続し、sql ステートメントを使用してテーブル CREATE TABLE
作成します。
このコードでは、PHP に含まれている MySQL Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_init メソッドと mysqli_real_connect メソッドを呼び出して MySQL に接続します。 次に、mysqli_query メソッドを呼び出してクエリを実行します。 その後、mysqli_close メソッドを呼び出して接続を閉じます。
mysqli 拡張機能によって提供されるオブジェクト指向インターフェイスを使用して、Azure Database for MySQL に接続することもできます。
$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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_prepare メソッドを使用して、準備済みの INSERT ステートメントを作成した後、mysqli_stmt_bind_param メソッドを使用して、挿入される列の値ごとにパラメーターをバインドします。 このコードでは、mysqli_stmt_execute メソッドでステートメントを実行してから、mysqli_stmt_close メソッドでステートメントを閉じます。
mysqli 拡張機能によって提供されるオブジェクト指向インターフェイスを使用して、Azure Database for MySQL に接続することもできます。
$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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_query メソッドを使用して SQL クエリを実行し、mysqli_fetch_assoc メソッドを使用して結果の行をフェッチします。
mysqli 拡張機能によって提供されるオブジェクト指向インターフェイスを使用して、Azure Database for MySQL に接続することもできます。
$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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_prepare メソッドを使用して、準備済みの UPDATE ステートメントを作成し、mysqli_stmt_bind_param メソッドを使用して、更新される列の値ごとにパラメーターをバインドします。 このコードでは、mysqli_stmt_execute メソッドでステートメントを実行してから、mysqli_stmt_close メソッドでステートメントを閉じます。
mysqli 拡張機能によって提供されるオブジェクト指向インターフェイスを使用して、Azure Database for MySQL に接続することもできます。
$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 Improved 拡張機能 (mysqli) クラスを使用します。 このコードでは、mysqli_prepare メソッドを使用して、準備済みの DELETE ステートメントを作成し、mysqli_stmt_bind_param メソッドを使用して、ステートメント内の WHERE 句のパラメーターをバインドします。 このコードでは、mysqli_stmt_execute メソッドでステートメントを実行してから、mysqli_stmt_close メソッドでステートメントを閉じます。
mysqli 拡張機能によって提供されるオブジェクト指向インターフェイスを使用して、Azure Database for MySQL に接続することもできます。
$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);
?>