次の方法で共有


クイック スタート: 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

接続情報の取得

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

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

接続とテーブルの作成

接続し、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