快速入门:使用 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 门户
  2. 在 Azure 门户的左侧菜单中,选择“所有资源”,然后搜索你已创建的服务器(例如 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.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