クイック スタート: PHP を使用して Azure Database for PostgreSQL - フレキシブル サーバーに接続し、データのクエリを実行する
適用対象: Azure Database for PostgreSQL - フレキシブル サーバー
このクイックスタートでは、PHP アプリケーションを使用して Azure Database for PostgreSQL に接続する方法を紹介します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 この記事の手順では、PHP を使用した開発には慣れているものの、Azure Database for PostgreSQL の使用は初めてであるユーザーを想定しています。
前提条件
このクイックスタートは、「Azure Database for PostgreSQL - フレキシブル サーバー インスタンスを作成する」で作成したリソースを出発点として使用します。
PHP のインストール
サーバーに PHP をインストールするか、PHP が含まれる Azure Web アプリを作成します。
Windows
- PHP 7.1.4 非スレッド セーフ バージョン (x64) をダウンロードします
- PHP をインストールし、さらなる構成については PHP マニュアルを参照します。
- このコードでは、PHP のインストールに含まれている pgsql クラス (ext/php_pgsql.dll) を使います。
- php.ini 構成ファイル (通常は
C:\Program Files\PHP\v7.1\php.ini
にあります) を編集して、pgsql 拡張機能を有効にします。 この構成ファイルには、extension=php_pgsql.so
というテキスト行を含める必要があります。 このテキストが表示されていない場合は、追加してファイルを保存します。 このテキストが含まれていても、先頭にセミコロンが付いてコメント化されている場合は、セミコロンを削除してコメント解除します。
Linux (Ubuntu)
- PHP 7.1.4 非スレッド セーフ バージョン (x64) をダウンロードします
- PHP をインストールし、さらなる構成については PHP マニュアルを参照します。
- このコードでは、pgsql クラス (php_pgsql.so) を使用します。
sudo apt-get install php-pgsql
を実行してインストールします。 /etc/php/7.0/mods-available/pgsql.ini
構成ファイルを編集して、pgsql 拡張機能を有効にします。 この構成ファイルには、extension=php_pgsql.so
というテキスト行を含める必要があります。 このテキストが表示されていない場合は、追加してファイルを保存します。 このテキストが含まれていても、先頭にセミコロンが付いてコメント化されている場合は、セミコロンを削除してコメント解除します。
macOS
- PHP 7.1.4 バージョンをダウンロードします。
- PHP をインストールし、さらなる構成については PHP マニュアルを参照します。
接続情報の取得
Azure Database for PostgreSQL に接続するために必要な接続情報を取得します。 完全修飾サーバー名とログイン資格情報が必要です。
- Azure Portal にログインします。
- Azure portal の左側のメニューにある [すべてのリソース] を選択し、作成したサーバー (例: mydemoserver) を検索します。
- サーバー名を選択します。
- サーバーの [概要] パネルから、 [サーバー名] と [サーバー管理者ログイン名] を書き留めます。 パスワードを忘れた場合も、このパネルからパスワードをリセットすることができます。
接続とテーブルの作成
接続し、CREATE TABLE SQL ステートメントを使用してテーブルを作成してから、INSERT INTO SQL ステートメントでそのテーブルに行を追加するには、次のコードを使用します。
このコードの呼び出しメソッド pg_connect() を使用して、Azure Database for PostgreSQL に接続します。 次に、メソッド pg_query() を数回呼び出して複数のコマンドを実行し、毎回エラーが発生した場合は pg_last_error() を呼び出して詳細をチェックします。 その後、メソッド pg_close() を呼び出して接続を閉じます。
$host
、$database
、$user
、$password
の各パラメーターは、実際の値に置き換えてください。
<?php
// Initialize connection variables.
$host = "mydemoserver.postgres.database.azure.com";
$database = "mypgsqldb";
$user = "mylogin@mydemoserver";
$password = "<server_admin_password>";
// Initialize connection object.
$connection = pg_connect("host=$host dbname=$database user=$user password=$password")
or die("Failed to create connection to database: ". pg_last_error(). "<br/>");
print "Successfully created a connection to the database.<br/>";
// Drop the previous table of the same name if one exists.
$query = "DROP TABLE IF EXISTS inventory;";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). "<br/>");
print "Finished dropping table (if existed).<br/>";
// Create table.
$query = "CREATE TABLE inventory (id serial PRIMARY KEY, name VARCHAR(50), quantity INTEGER);";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). "<br/>");
print "Finished creating table.<br/>";
// Insert some data into the table.
$name = '\'banana\'';
$quantity = 150;
$query = "INSERT INTO inventory (name, quantity) VALUES ($name, $quantity);";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). "<br/>");
$name = '\'orange\'';
$quantity = 154;
$query = "INSERT INTO inventory (name, quantity) VALUES ($name, $quantity);";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). "<br/>");
$name = '\'apple\'';
$quantity = 100;
$query = "INSERT INTO inventory (name, quantity) VALUES ($name, $quantity);";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error()). "<br/>";
print "Inserted 3 rows of data.<br/>";
// Closing connection
pg_close($connection);
?>
データの読み取り
接続し、SELECT SQL ステートメントを使用してデータを読み取るには、次のコードを使用します。
このコードの呼び出しメソッド pg_connect() を使用して、Azure Database for PostgreSQL に接続します。 次に、pg_query() メソッドを呼び出して SELECT コマンドを実行し (結果は結果セットに保持されます)、エラーが発生した場合は pg_last_error() を呼び出して詳細をチェックします。 結果セットを読み取るために、ループで pg_fetch_row() メソッドが呼び出されます。このメソッドは行ごとに 1 回呼び出され、行データは配列 $row
に取得されます。このとき、列あたり 1 つのデータ値が各配列位置に格納されます。 結果セットを開放するために、pg_free_result() メソッドが呼び出されます。 その後、pg_close() メソッドを呼び出して接続を閉じます。
$host
、$database
、$user
、$password
の各パラメーターは、実際の値に置き換えてください。
<?php
// Initialize connection variables.
$host = "mydemoserver.postgres.database.azure.com";
$database = "mypgsqldb";
$user = "mylogin@mydemoserver";
$password = "<server_admin_password>";
// Initialize connection object.
$connection = pg_connect("host=$host dbname=$database user=$user password=$password")
or die("Failed to create connection to database: ". pg_last_error(). "<br/>");
print "Successfully created a connection to the database. <br/>";
// Perform some SQL queries over the connection.
$query = "SELECT * from inventory";
$result_set = pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). "<br/>");
while ($row = pg_fetch_row($result_set))
{
print "Data row = ($row[0], $row[1], $row[2]). <br/>";
}
// Free result_set
pg_free_result($result_set);
// Closing connection
pg_close($connection);
?>
データの更新
接続し、UPDATE SQL ステートメントを使用してデータを更新するには、次のコードを使用します。
このコードの呼び出しメソッド pg_connect() を使用して、Azure Database for PostgreSQL に接続します。 次に、pg_query() メソッドを呼び出してコマンドを実行し、エラーが発生した場合は pg_last_error() を呼び出して詳細をチェックします。 その後、pg_close() メソッドを呼び出して接続を閉じます。
$host
、$database
、$user
、$password
の各パラメーターは、実際の値に置き換えてください。
<?php
// Initialize connection variables.
$host = "mydemoserver.postgres.database.azure.com";
$database = "mypgsqldb";
$user = "mylogin@mydemoserver";
$password = "<server_admin_password>";
// Initialize connection object.
$connection = pg_connect("host=$host dbname=$database user=$user password=$password")
or die("Failed to create connection to database: ". pg_last_error(). ".<br/>");
Print "Successfully created a connection to the database. <br/>";
// Modify some data in a table.
$new_quantity = 200;
$name = '\'banana\'';
$query = "UPDATE inventory SET quantity = $new_quantity WHERE name = $name;";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). ".<br/>");
print "Updated 1 row of data. </br>";
// Closing connection
pg_close($connection);
?>
データの削除
接続し、DELETE SQL ステートメントを使用してデータを削除するには、次のコードを使用します。
このコードの呼び出しメソッド pg_connect() を使用して、Azure Database for PostgreSQL に接続します。 次に、pg_query() メソッドを呼び出してコマンドを実行し、エラーが発生した場合は pg_last_error() を呼び出して詳細をチェックします。 その後、pg_close() メソッドを呼び出して接続を閉じます。
$host
、$database
、$user
、$password
の各パラメーターは、実際の値に置き換えてください。
<?php
// Initialize connection variables.
$host = "mydemoserver.postgres.database.azure.com";
$database = "mypgsqldb";
$user = "mylogin@mydemoserver";
$password = "<server_admin_password>";
// Initialize connection object.
$connection = pg_connect("host=$host dbname=$database user=$user password=$password")
or die("Failed to create connection to database: ". pg_last_error(). ". </br>");
print "Successfully created a connection to the database. <br/>";
// Delete some data from a table.
$name = '\'orange\'';
$query = "DELETE FROM inventory WHERE name = $name;";
pg_query($connection, $query)
or die("Encountered an error when executing given sql statement: ". pg_last_error(). ". <br/>");
print "Deleted 1 row of data. <br/>";
// Closing connection
pg_close($connection);
?>
リソースをクリーンアップする
このクイックスタートで使用したすべてのリソースをクリーンアップするには、次のコマンドを使用してリソース グループを削除します。
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes
関連するコンテンツ
- Azure Database for PostgreSQL - フレキシブル サーバーを管理する。
- クイック スタート: Python を使用して Azure Database for PostgreSQL フレキシブル サーバーのインスタンスから接続し、データのクエリを実行する。
- クイック スタート: Java を使用して Azure Database for PostgreSQL フレキシブル サーバーのインスタンスから接続し、データのクエリを実行する。
- クイック スタート: .NET (C#) を使用して Azure Database for PostgreSQL フレキシブル サーバーのインスタンスから接続し、データのクエリを実行する。
- クイック スタート: Go 言語を使用して Azure Database for PostgreSQL フレキシブル サーバーのインスタンスから接続し、データのクエリを実行する。
- クイック スタート: Azure CLI を使用して Azure Database for PostgreSQL フレキシブル サーバーのインスタンスから接続し、データのクエリを実行する。
- クイック スタート: Power BI で Azure Database for PostgreSQL - フレキシブル サーバーからデータをインポートする。