PostgreSQL 与 PHP 数据对象

PostgreSQL 是另一种与 PHP 兼容的流行数据库。如果你已经熟悉如何在 PHP 中使用 MySQL,那么下表应该能帮助你更容易地将代码转换为 PostgreSQL。

函数对比

  1. 连接

    • mysql_connect() 需要三个参数(服务器、用户名、密码),而 pg_connect() 只需要一个连接字符串参数。
    • MySQL 示例
      $db = mysql_connect('localhost', 'mysql_user', 'mysql_pass');
      
    • PostgreSQL 示例
      $db = pg_connect('host=localhost user=pg_user password=pg_pass dbname=my_database');
      
  2. 数据库选择

    • 在 MySQL 中,你需要单独指定要连接的数据库名称,而在 PostgreSQL 中,数据库名称是包含在 pg_connect() 的连接字符串中的。
  3. 查询

    • mysql_query()pg_query() 的行为相同。
    • MySQL 示例
      $grab_people = mysql_query("SELECT * FROM people WHERE id_num = 3761832");
      
    • PostgreSQL 示例
      $grab_people = pg_query("SELECT * FROM people WHERE id_num = 3761832");
      
  4. 获取关联结果

    • mysql_fetch_assoc()pg_fetch_assoc() 的行为相同。
    • MySQL 示例
      $person = mysql_fetch_assoc($grab_people);
      
    • PostgreSQL 示例
      $person = pg_fetch_assoc($grab_people);
      
  5. 获取错误

    • MySQL 使用 mysql_error(),而 PostgreSQL 使用 pg_last_error()
    • MySQL 示例
      $error = mysql_error();
      
    • PostgreSQL 示例
      $error = pg_last_error();
      
  6. 关闭数据库连接

    • mysql_close()pg_close() 的行为相同。
    • MySQL 示例
      mysql_close($db);
      
    • PostgreSQL 示例
      pg_close($db);
      
  7. 释放结果

    • mysql_free_result()pg_free_result() 的行为相同。
    • MySQL 示例
      mysql_free_result($grab_people);
      
    • PostgreSQL 示例
      pg_free_result($grab_people);
      

完整 MySQL 示例

$db = mysql_connect('localhost', 'mysql_user', 'mysql_pass');
$grab_people = mysql_query("SELECT * FROM people WHERE id_num = 3761832");
$person = mysql_fetch_assoc($grab_people);
print_r($person);
$error = mysql_error();
if ($error != "") { print $error; }
mysql_free_result($grab_people);
mysql_close($db);

完整 PostgreSQL 示例

$db = pg_connect('host=localhost user=pg_user password=pg_pass dbname=my_database');
$grab_people = pg_query("SELECT * FROM people WHERE id_num = 3761832");
$person = pg_fetch_assoc($grab_people);
print_r($person);
print pg_last_error();
pg_free_result($grab_people);
pg_close($db);

进一步信息

最后修改: 2025年01月10日 星期五 00:35