LXXXIV. PostgreSQL 数据库函数库介绍PostgreSQL 是一个开放源码的免费数据库系统。Postgres 最初由加州大学伯克利分校计算机科学系开发,倡导了很多关系对象的观念,这些观念现在已经用在一些商业数据库系统中。它提供了 SQL92/SQL99 语言支持,事务处理,引用集成,存储过程以及类型扩展。PostgreSQL 则是 Postgres 的一个开放源代码的后代。 需求要使用 PostgreSQL 支持,需要 PostgreSQL 6.5 或更新版本,PostgreSQL 7.0 或更新版本来使用所有的 PostgreSQL 模块。PostgreSQL 支持多种字符编码包括多字节字符编码。关于 PostgreSQL 的当前版本以及更多信息见 http://www.postgresql.org/ 以及 http://techdocs.postgresql.org/。 安装为添加 PostgreSQL 支持,在编译 PHP 时需要加上 --with-pgsql[=DIR] 选项。如果可以用共享模块方式,PostgreSQL 模块可以在 php.ini 用 extension 指令或者 dl() 函数加载。 运行时配置这些函数的行为受到全局配置文件 php.ini 的影响。
表格 1. PostgreSQL 配置选项
以下是该配置选项的简要解释。
使用方法及提示
不是所有的版本都支持所有的函数,这和 libpq 的版本和编译方法有关。如果编译源代码时少了一个函数,那么 libpq 就不支持需要该函数的功能。 不要使用比 PostgreSQL 服务器连接所接受更旧版本的 libpq 也很重要。如果你用的 libpq 版本比 PostgreSQL 服务器预期的低就可能出现问题。 PostgreSQL 在 6.3 (03/02/1998) 版之后默认使用 unix domain sockets,默认状态下不会打开 TCP 端口。下面这张表说明了各种新建连接的可能性。TCP/IP socket 放在 /tmp/.s.PGSQL.5432。该选项可用 postmaster 中的 '-i' 参数打开,它表示“监视 TCP/IP 端口以及 Unix domain socket”。 表格 3. Postmaster 和 PHP
到 PostgreSQL 服务器的连接可以通过以下命令串中的参数对建立:$conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions dbname=myDB user=myUser password=myPassword"); 以前的语法: $conn = pg_connect ("host", "port", "options", "tty", "dbname") 已经不再提倡使用。 环境变量会影响 PostgreSQL 服务器/客户机的行为。例如如果连接串中省略了主机名,PostgreSQL 模块将会查找环境变量 PGHOST。 不同版本所支持的环境变量不同,详情参考 PostgreSQL Programmers's Manual (libpq - Environment Variables)。 确认已经给适当的用户设置了环境变量。用 $_ENV 或 getenv() 来检查当前进程可以使用哪些环境变量。 预定义常量由于这些常量是由该扩展模块定义的,因此只有在该扩展模块被编译到 PHP 中,或者在运行时被动态加载后,这些常量才有效。
范例从 PostgreSQL 7.1.0 开始,在一个 text 类型字段中最多可以储存 1GB 的数据。在老版本中则限制为一个块的大小(默认 8KB,最大 32KB,编译时指定)。 要使用 large object (lo) 接口,需要把 large object 函数放在一个事务段中。事务段以 SQL 语句 BEGIN 开始,如果该事务合法,以 COMMIT 或者 END结束,如果该事务失败,则以 ROLLBACK 或者 ABORT结束。
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||