LI. PostgreSQL functions

Postgres, developed originally in the UC Berkeley Computer Science Department, pioneered many of the object-relational concepts now becoming available in some commercial databases. It provides SQL92/SQL3 language support, transaction integrity, and type extensibility. PostgreSQL is a public-domain, open source descendant of this original Berkeley code.

PostgreSQL is available without cost. The current version is available at

Since version 6.3 (03/02/1998) PostgreSQL uses unix domain sockets. A table is shown below describing these new connection possibilities. This socket will be found in /tmp/.s.PGSQL.5432. This option can be enabled with the '-i' flag to postmaster and it's meaning is: "listen on TCP/IP sockets as well as Unix domain sockets".

Table 1. Postmaster and PHP

postmaster &pg_connect("dbname=MyDbName");OK
postmaster -i &pg_connect("dbname=MyDbName");OK
postmaster &pg_connect("host=localhost dbname=MyDbName"); Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20.
postmaster -i &pg_connect("host=localhost dbname=MyDbName");OK

One can establish a connection with the following value pairs set in the command string: $conn = pg_Connect("host=myHost port=myPort tty=myTTY options=myOptions user=myUser password=myPassword dbname=myDB");

The previous syntax of: $conn = pg_connect ("host", "port", "options", "tty", "dbname") has been deprecated.

To use the large object (lo) interface, it is necessary to enclose it within a transaction block. A transaction block starts with a begin and if the transaction was valid ends with commit or end. If the transaction fails the transaction should be closed with rollback or abort.

Example 1. Using Large Objects

    $database = pg_Connect ("dbname=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");

Table of Contents
pg_close — Close a PostgreSQL connection
pg_cmdtuples — Returns number of affected tuples
pg_connect — Open a PostgreSQL connection
pg_dbname — Get the database name
pg_end_copy — Sync with PostgreSQL backend
pg_errormessage — Get the error message string
pg_exec — Execute a query
pg_fetch_array — Fetch a row as an array
pg_fetch_object — Fetch a row as an object
pg_fetch_row — Get a row as an enumerated array
pg_fieldisnull — Test if a field is NULL
pg_fieldname — Returns the name of a field
pg_fieldnum — Returns the field number of the named field
pg_fieldprtlen — Returns the printed length
pg_fieldsize — Returns the internal storage size of the named field
pg_fieldtype — Returns the type name for the corresponding field number
pg_freeresult — Free reult memory
pg_getlastoid — Returns the last object identifier
pg_host — Returns the host name associated with the connection
pg_loclose — Close a large object
pg_locreate — Create a large object
pg_loexport — Export a large object to file
pg_loimport — Import a large object from file
pg_loopen — Open a large object
pg_loread — Read a large object
pg_loreadall — Read a entire large object and send straight to browser
pg_lounlink — Delete a large object
pg_lowrite — Write a large object
pg_numfields — Returns the number of fields
pg_numrows — Returns the number of rows
pg_options — Get the options associated with the connection
pg_pconnect — Open a persistant PostgreSQL connection
pg_port — Return the port number associated with the connection
pg_put_line — Send a NULL-terminated string to PostgreSQL backend
pg_result — Returns values from a result identifier
pg_set_client_encoding — Set the client encoding
pg_client_encoding — Get the client encoding
pg_trace — Enable tracing a PostgreSQL connection
pg_tty — Return the tty name associated with the connection
pg_untrace — Disable tracing of a PostgreSQL connection