快速入門:使用 PHP 連線和查詢 適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器中的數據

適用於:適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器

重要

適用於 PostgreSQL 的 Azure 資料庫 - 單一伺服器位於淘汰路徑上。 強烈建議您升級至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器。 如需移轉至 適用於 PostgreSQL 的 Azure 資料庫 - 彈性伺服器的詳細資訊,請參閱單一伺服器 適用於 PostgreSQL 的 Azure 資料庫 發生什麼事?

本快速入門示範如何使用 PHP 應用程式連線到 適用於 PostgreSQL 的 Azure 資料庫。 它會顯示如何使用 SQL 陳述式來查詢、插入、更新和刪除資料庫中的資料。 本文中的步驟假設您已熟悉使用 PHP 進行開發,而且不熟悉 適用於 PostgreSQL 的 Azure 資料庫。

必要條件

本快速入門使用在以下任一指南中建立的資源作為起點︰

安裝 PHP

在您自己的伺服器上安裝 PHP,或建立包含 PHP 的 Azure Web 應用程式

Windows

  • 下載 PHP 7.1.4 非線程安全 (x64) 版本
  • 安裝 PHP 並參閱 PHP 手冊 以取得進一步的設定
  • 程序代碼會使用 PHP 安裝中包含的 pgsql 類別 (ext/php_pgsql.dll)。
  • 藉由編輯php.ini組態檔來啟用 pgsql 擴充功能,通常位於 C:\Program Files\PHP\v7.1\php.ini。 組態檔應該包含一行文字 extension=php_pgsql.so。 如果未顯示,請新增文字並儲存盤案。 如果文字存在,但以分號前置詞加上批注,請移除分號來取消批註文字。

Linux (Ubuntu)

  • 下載 PHP 7.1.4 非線程安全 (x64) 版本
  • 安裝 PHP 並參閱 PHP 手冊 以取得進一步的設定
  • 程序代碼會使用 pgsql 類別(php_pgsql.so)。 執行 sudo apt-get install php-pgsql來安裝它。
  • 編輯 組態檔來啟用pgsql 擴充功能 /etc/php/7.0/mods-available/pgsql.ini 。 組態檔應該包含一行文字 extension=php_pgsql.so。 如果未顯示,請新增文字並儲存盤案。 如果文字存在,但以分號前置詞加上批注,請移除分號來取消批註文字。

MacOS

取得連線資訊

取得連線至 適用於 PostgreSQL 的 Azure 資料庫 所需的連線資訊。 您需要完整的伺服器名稱和登入認證。

  1. 登入 Azure 入口網站
  2. 從 Azure 入口網站的左側功能表中,選取 [所有資源],然後搜尋您所建立的伺服器 (例如 mydemoserver)。
  3. 選取伺服器名稱。
  4. 從伺服器的 [概觀] 面板,記下 [伺服器名稱] 和 [伺服器管理員登入名稱]。 如果您忘記密碼,您也可以從此面板重設密碼。 適用於 PostgreSQL 的 Azure 資料庫 伺服器名稱

連線及建立資料表

使用下列程序代碼,使用 CREATE TABLE SQL 語句連接及建立數據表,後面接著 INSERT INTO SQL 語句,以將數據列加入數據表中。

要連線到 適用於 PostgreSQL 的 Azure 資料庫 的程式代碼呼叫方法pg_connect()。 然後它會呼叫 方法 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() 以連線至 適用於 PostgreSQL 的 Azure 資料庫。 然後它會呼叫方法 pg_query() 來執行 SELECT 命令、將結果保留在結果集中,以及 pg_last_error() 來檢查錯誤是否發生的詳細數據。 若要讀取結果集,方法 pg_fetch_row() 會在迴圈中呼叫,每個數據列一次,而數據列數據會在陣列中擷取,每個數位 $row位置中每個數據行都有一個數據值。 若要釋放結果集,會呼叫 方法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() 連接到 適用於 PostgreSQL 的 Azure 資料庫。 然後它會呼叫 方法 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() 連接到 適用於 PostgreSQL 的 Azure 資料庫。 然後它會呼叫 方法 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

下一步