PHP4手册:函数库及函数(四十一) PostgreSQL 资料库函式库


--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
--------------------------------------------------------------------------------
本函式库共有 32 个函式
Postgres 资料库是由柏克莱大学电脑科学系所开发的资料库系统,为物件关联式资料库的先驱。它提供 SQL92/SQL3 语法。PostgreSQL 是公开使用的免费系统。更多细节可在 http://www.PostgreSQL.org 站上看到。
在 phpWizard.net 网站上也有用 Browser 管理 PostgreSQL 的套装程式 PostgresAdmin。可以用它来轻松管理 PostgreSQL 资料库。
在西元 1998 年的 PostgreSQL 6.3 版之后,可以使用 UNIX 上的 domain sockets。postmaster 加上参数 -i 就可以使用,PostgreSQL 系统会用到 /tmp/.s.PGSQL.5432 的档案。
下面为使用 LOB (Large Object) 的例子
$database = pg_Connect ("", "", "", "", "jacarta");
pg_exec ($database, "begin");
$oid = pg_locreate ($database);
echo ("$oid\n");
$handle = pg_loopen ($database, $oid, "w");
echo ("$handle\n");
pg_lowrite ($handle, "gaga");
pg_loclose ($handle);
pg_exec ($database, "commit")
pg_exec ($database, "end")
?>
pg_Close: 关闭 PostgreSQL 伺服器连线。
pg_cmdTuples: 取得被 SQL 指令影响的资料笔数。
pg_Connect: 开启 PostgreSQL 伺服器连线。
pg_DBname: 取得目前的资料库名称。
pg_ErrorMessage: 传回错误讯息。
pg_Exec: 执行 query 指令。
pg_Fetch_Array: 传回阵列资料。
pg_Fetch_Object: 传回物件资料。
pg_Fetch_Row: 传回单列的各栏位。
pg_FieldIsNull: 检查栏位是否有资料。
pg_FieldName: 传回指定栏位的名称。
pg_FieldNum: 取得指定栏位的行数。
pg_FieldPrtLen: 计算可列示的长度。
pg_FieldSize: 计算指定栏位的长度。
pg_FieldType: 获得目前栏位的型态。
pg_FreeResult: 释放传回占用记忆体。
pg_GetLastOid: 取得最后的物件代码。
pg_Host: 取得连线机器名称。
pg_loclose: 关闭大型物件。
pg_locreate: 建立大型物件。
pg_loopen: 开启大型物件。
pg_loread: 读取大型物件。
pg_loreadall: 读取大型物件并输出。
pg_lounlink: 删除大型物件。
pg_lowrite: 读取大型物件。
pg_NumFields: 取得传回栏位的数目。
pg_NumRows: 取得传回列的数目。
pg_Options: 取得连线机器选项。
pg_pConnect: 开启 PostgreSQL 伺服器长期连线。
pg_Port: 取得连线机器埠号。
pg_Result: 取得查询 (query) 的结果。
pg_tty: 取得连线机器终端机。
--------------------------------------------------------------------------------
函式:pg_Close()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Close
关闭 PostgreSQL 伺服器连线。
语法: boolean pg_close(int connection);
传回值: 布林值
函式种类: 资料库功能
内容说明
本函式关闭与 PostgreSQL 伺服器的连线。参数 connection 为连线代码。成功传回 true、失败传回 false 值。
--------------------------------------------------------------------------------
函式:pg_cmdTuples()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_cmdTuples
取得被 SQL 指令影响的资料笔数。
语法: int pg_cmdtuples(int result_id);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来取得 PostgreSQL 的 SQL 指令所影响的资料笔数,这些 query 指令包括 INSERT、UPDATE 与 DELETE 等。传回值为影响的笔数,若没有资料受影响则传回 0。
使用范例
本例为部份的程式
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples." 笔资料受影响
\n";
?>
--------------------------------------------------------------------------------
函式:pg_Connect()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Connect
开启 PostgreSQL 伺服器连线。
语法: int pg_connect(string [host], string [port], string [options], string [tty], string database);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式打开与 PostgreSQL 伺服器的连线。参数 host 表伺服器名称。参数 port 为连线埠。参数 options 为选项。参数 tty 为终端机。参数 database 为资料库名。成功传回连线代号、失败传回 false 值。
使用范例
pg_connect("dbname=testdb user=wilson password=haha port=5433");
// 以下略
?>
参考
pg_pConnect()
--------------------------------------------------------------------------------
函式:pg_DBname()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_DBname
取得目前的资料库名称。
语法: string pg_dbname(int connection);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来取得 PostgreSQL 目前使用的资料库 (database) 名称。参数 connection 为连线代码。
--------------------------------------------------------------------------------
函式:pg_ErrorMessage()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_ErrorMessage
传回错误讯息。
语法: string pg_errormessage(int connection);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可以取得 PostgreSQL 伺服器的错误讯息。参数 connection 为连线代码。
--------------------------------------------------------------------------------
函式:pg_Exec()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Exec
执行 query 指令。
语法: int pg_exec(int connection, string query);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来执行指定的 query 指令。参数 connection 为连线代码。参数 query 为欲执行的指令。
--------------------------------------------------------------------------------
函式:pg_Fetch_Array()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Fetch_Array
传回阵列资料。
语法: array pg_fetch_array(int result, int row);
传回值: 阵列
函式种类: 资料库功能
内容说明
本函式用来将查询结果 result 拆到阵列变数中。若 result 没有资料,则传回 false 值。参数 result 为使用 pg_Exec() 所传回的代码值。参数 row 为列数。
使用范例
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "错误, 无法连线\n";
exit;
}
$result = pg_Exec($conn, "SELECT * FROM authors");
if (!$result) {
echo "错误, 无法查询\n";
exit;
}
$arr = pg_fetch_array($result, 0);
echo $arr[0]." <- array\n";
$arr = pg_fetch_array ($result, 1);
echo $arr["author"] . " <- array\n";
?>
--------------------------------------------------------------------------------
函式:pg_Fetch_Object()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Fetch_Object
传回物件资料。
语法: object pg_fetch_object(int result, int row);
传回值: 物件
函式种类: 资料库功能
内容说明
本函式用来将查询结果 result 拆到物件变数中。若 result 没有资料,则传回 false 值。参数 result 为使用 pg_Exec() 所传回的代码值。参数 row 为列数。
使用范例
$database = "verlag";
$db_conn = pg_connect("localhost", "5432", "", "", $database);
if (!$db_conn): ?>
无法连上 资料库 exit;
endif;
$qu = pg_exec ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0;
while ($data = pg_fetch_object ($qu, $row)):
echo $data->autor." (";
echo $data->jahr ."): ";
echo $data->titel."
";
$row++;
endwhile; ?>
$fields[] = Array("autor", "Author");
$fields[] = Array("jahr", " Year");
$fields[] = Array("titel", " Title");
$row = 0;
while ($data = pg_fetch_object($qu, $row)):
echo "--------------------------------------------------------------------------------\n";
reset ($fields);
while (list (,$item) = each($fields)):
echo $item[1].": ".$data->$item[0]."\n";
endwhile;
$row++;
endwhile;
echo "--------------------------------------------------------------------------------"; ?>
pg_freeResult($qu);
pg_close($db_conn);
?>
--------------------------------------------------------------------------------
函式:pg_Fetch_Row()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Fetch_Row
传回单列的各栏位。
语法: array pg_fetch_row(int result, int row);
传回值: 阵列
函式种类: 资料库功能
内容说明
本函式用来将查询结果 result 之单列拆到阵列变数中。阵列的索引是数字索引,第一个的索引值是 0。若 result 没有资料,则传回 false 值。参数 row 表列数。
使用范例
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "连线失败\n";
exit;
}
$result = pg_Exec($conn, "SELECT * FROM authors");
if (!$result) {
echo "查询失败\n";
exit;
}
$row = pg_fetch_row($result, 0);
echo $row[0] . " <- row\n";
$row = pg_fetch_row($result, 1);
echo $row[0] . " <- row\n";
$row = pg_fetch_row($result, 2);
echo $row[1] . " <- row\n";
?>
参考
pg_Fetch_Array() pg_Fetch_Object() pg_Result()
--------------------------------------------------------------------------------
函式:pg_FieldIsNull()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FieldIsNull
检查栏位是否有资料。
语法: int pg_fieldisnull(int result, int row, mixed field);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可检查指定的栏位是否有资料。参数 result 为查询结果代码。参数 row 为指定列数,第一个的索引值是 0。参数 field 为指定的栏位。传回 0 表示有资料,传回 1 表示无资料 (Null)。
--------------------------------------------------------------------------------
函式:pg_FieldName()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FieldName
传回指定栏位的名称。
语法: string pg_fieldname(int result, int field);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来取得指定栏位的名称。参数 result 为查询结果代码。参数 field 为指定的栏位,第一栏为 0。
--------------------------------------------------------------------------------
函式:pg_FieldNum()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FieldNum
取得指定栏位的行数。
语法: int pg_fieldnum(int result, mixed field);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来取得指定栏位的行数。参数 result 为查询结果代码。参数 field 为指定的栏位,第一栏为 0。若有错误则传回 -1 值。
--------------------------------------------------------------------------------
函式:pg_FieldPrtLen()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FieldPrtLen
计算可列示的长度。
语法: int pg_fieldprtlen(int result, int row, mixed field);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来取得指定栏位的可列示字元长度。参数 result 为查询结果代码。参数 row 表指定的列。参数 field 为指定的栏位,第一栏为 0。若有错误则传回 -1 值。
--------------------------------------------------------------------------------
函式:pg_FieldSize()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FieldSize
计算指定栏位的长度。
语法: int pg_fieldsize(int result, mixed field);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来取得指定栏位的长度 (位元组)。参数 result 为查询结果代码。参数 field 为指定的栏位,第一栏为 0。若有错误则传回 -1 值。
--------------------------------------------------------------------------------
函式:pg_FieldType()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FieldType
获得目前栏位的型态。
语法: string pg_fieldtype(int result, mixed field);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式可以得到目前所在栏位的型态格式。传回的字串为栏位的型态,包括了 int、real、string....等等。参数 result 为查询结果代码。参数 field 为指定的栏位,第一栏为 0。若有错误则传回 -1 值。
--------------------------------------------------------------------------------
函式:pg_FreeResult()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_FreeResult
释放传回占用记忆体。
语法: boolean pg_freeresult(int result);
传回值: 布林值
函式种类: 资料库功能
内容说明
本函式可以释放目前 PostgreSQL 资料库 query 传回所占用的记忆体。一般只有在非常担心在记忆体的使用上可能会不足的情形下才会用本函式。PHP 程式会在结束时自动释放。参数 result 为查询结果代码。
--------------------------------------------------------------------------------
函式:pg_GetLastOid()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_GetLastOid
取得最后的物件代码。
语法: int pg_getlastoid(int result);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式获取最后的物件代码,物件是由 pg_Exec() 所执行的 INSERT SQL 指令产生的。参数 result 为查询结果代码。若不是由 pg_Exec() 的 INSERT 产生物件,则会产生错误,传回 -1 值。
--------------------------------------------------------------------------------
函式:pg_Host()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Host
取得连线机器名称。
语法: string pg_host(int connection);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来取得目前连线中的 PostgreSQL 伺服器名称。参数 connection 为连线代码。
--------------------------------------------------------------------------------
函式:pg_loclose()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_loclose
关闭大型物件。
语法: void pg_loclose(int fd);
传回值: 无
函式种类: 资料库功能
内容说明
本函式用来关闭大型物件 (Inversion Large Object)。参数 fd 是由 pg_loopen() 所开启的档案代码。
--------------------------------------------------------------------------------
函式:pg_locreate()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_locreate
建立大型物件。
语法: int pg_locreate(int connection);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来建立大型物件 (Inversion Large Object)。参数 connection 为连线代码。PostgreSQL 资料库的存取模式只有 INV_READ、INV_WRITE 二种,INV_ARCHIVE 已经从 PostgreSQL 6.3 之后的版本移除。传回值为物件代码。
--------------------------------------------------------------------------------
函式:pg_loopen()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_loopen
开启大型物件。
语法: int pg_loopen(int connection, int objoid, string mode);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来开启大型物件 (Inversion Large Object)。参数 connection 为连线代码。参数 objoid 为物件代码。参数 mode 的值有唯读 (r)、唯写 (w) 及可读写 (rw) 等三种。传回值为档案代码。
--------------------------------------------------------------------------------
函式:pg_loread()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_loread
读取大型物件。
语法: string pg_loread(int fd, int len);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来读取大型物件 (Inversion Large Object)。参数 fd 为物件的档案代码。参数 len 为欲读取的最大长度。
--------------------------------------------------------------------------------
函式:pg_loreadall()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_loreadall
读取大型物件并输出。
语法: void pg_loreadall(int fd);
传回值: 无
函式种类: 资料库功能
内容说明
本函式用来读取大型物件 (Inversion Large Object),并将结果输出到标准输出设备中。参数 fd 为物件的档案代码。
--------------------------------------------------------------------------------
函式:pg_lounlink()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_lounlink
删除大型物件。
语法: void pg_lounlink(int connection, int lobjid);
传回值: 无
函式种类: 资料库功能
内容说明
本函式用来删除大型物件 (Inversion Large Object)。参数 connection 为连线代码。参数 objoid 为物件代码。
--------------------------------------------------------------------------------
函式:pg_lowrite()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_lowrite
读取大型物件。
语法: int pg_lowrite(int fd, string buf);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来写入大型物件 (Inversion Large Object)。参数 fd 为物件的档案代码。参数 buf 为欲写入物件的字串。若有错误则传回 false 值,正确则传回写入字串的位元组 (byte) 数。
--------------------------------------------------------------------------------
函式:pg_NumFields()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_NumFields
取得传回栏位的数目。
语法: int pg_numfields(int result);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到传回栏位的数目。参数 result 为 PostgreSQL 伺服器执行 query 的传回代码。若有错误则传回 -1。
--------------------------------------------------------------------------------
函式:pg_NumRows()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_NumRows
取得传回列的数目。
语法: int pg_numrows(int result);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式可以得到传回列的数目。参数 result 为 PostgreSQL 伺服器执行 query 的传回代码。若有错误则传回 -1。
--------------------------------------------------------------------------------
函式:pg_Options()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Options
取得连线机器选项。
语法: string pg_options(int connection);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来取得目前连线中 PostgreSQL 伺服器的选项。参数 connection 为连线代码。
--------------------------------------------------------------------------------
函式:pg_pConnect()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_pConnect
开启 PostgreSQL 伺服器长期连线。
语法: int pg_pconnect(string [host], string [port], string [options], string [tty], string database);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式打开与 PostgreSQL 伺服器的长期连线。参数 host 表伺服器名称。参数 port 为连线埠。参数 options 为选项。参数 tty 为终端机。参数 database 为资料库名。成功传回连线代号、失败传回 false 值。本函式和 pg_Connect() 不同的地方在于使用本函式开启资料库时,程式会先寻找是否曾经执行过本函式,若执行过则传回先前执行的 ID。此外程式结束后并不会关闭连线,而是等下次程式使用。
参考
pg_Connect()
--------------------------------------------------------------------------------
函式:pg_Port()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Port
取得连线机器埠号。
语法: int pg_port(int connection);
传回值: 整数
函式种类: 资料库功能
内容说明
本函式用来取得目前连线中 PostgreSQL 伺服器的埠号。参数 connection 为连线代码。
--------------------------------------------------------------------------------
函式:pg_Result()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_Result
取得查询 (query) 的结果。
语法: mixed pg_result(int result, int row, mixed field);
传回值: 混合型态资料
函式种类: 资料库功能
内容说明
本函式取得一格 query 的结果。参数 field 可以是栏位名称、顺序或者是 FieldName.TableName 的格式。
--------------------------------------------------------------------------------
函式:pg_tty()
--------------------------------------------------------------------------------
PostgreSQL 资料库函式库
pg_tty
取得连线机器终端机。
语法: string pg_tty(int connection);
传回值: 字串
函式种类: 资料库功能
内容说明
本函式用来取得目前连线中 PostgreSQL 伺服器的终端机名称,供除错等使用。参数 connection 为连线代码。