本快速入门演示了如何使用 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扩展。 配置文件应包含文本为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扩展。 配置文件应包含文本为extension=php_pgsql.so的行。 如果未显示,请添加该文本并保存文件。 如果文本存在,但已被分号前缀注释掉,请通过移除分号来取消注释该文本。
macOS
- 下载 PHP 7.1.4 版
- 安装 PHP 并参阅 PHP 手册以获取更多配置
获取连接信息
获取连接到 Azure Database for PostgreSQL 所需的连接信息。 需要完全限定的服务器名称和登录凭据。
- 登录到 Azure 门户。
- 在 Azure 门户的左侧菜单中,选择“所有资源”,然后搜索你已创建的服务器(例如 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.chinacloudapi.cn";
 $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() 方法,每行一个循环,并在数组 $row 中检索行数据,每列一个数据值(在每个数组位置)。 若要释放结果集,请调用 pg_free_result() 方法。 然后,它会调用方法 pg_close() 来关闭连接。
将 $host、$database、$user 和 $password 参数替换为你的值。
<?php
    // Initialize connection variables.
 $host = "mydemoserver.postgres.database.chinacloudapi.cn";
 $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.chinacloudapi.cn";
 $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.chinacloudapi.cn";
 $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 门户管理 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 导入数据。