クイック スタート:PHP を使用して Azure Database for PostgreSQL - Single Server に接続してデータを照会する

適用対象: Azure Database for PostgreSQL - 単一サーバー

重要

Azure Database for PostgreSQL - シングル サーバーは廃止パスにあります。 Azure Database for PostgreSQL - フレキシブル サーバーにアップグレードすることを強くお勧めします。 Azure Database for PostgreSQL - フレキシブル サーバーへの移行の詳細については、Azure Database for PostgreSQL 単一サーバーの現状に関するページをご覧ください。

このクイックスタートでは、PHP アプリケーションを使用して Azure Database for PostgreSQL に接続する方法を紹介します。 ここでは、SQL ステートメントを使用してデータベース内のデータを照会、挿入、更新、削除する方法を説明します。 この記事の手順では、PHP を使用した開発には慣れているものの、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

接続情報の取得

Azure Database for PostgreSQL に接続するために必要な接続情報を取得します。 完全修飾サーバー名とログイン資格情報が必要です。

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

接続とテーブルの作成

接続し、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 connection to database.<br/>";

	// Drop previous table of 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 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 connection to 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 connection to database. <br/>";

	// Modify some data in 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 connection to database. <br/>";

	// Delete some data from 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

次のステップ