你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

快速入门:使用 PHP 连接和查询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 扩展。 配置文件应包含文本为 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

获取连接信息

获取连接到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.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(), 每行调用一次。 行数据在数组 $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 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