LXXVIII. PostgreSQL functions
| Warning |
|
Use of PostgreSQL module with PHP 4.0.6 is not recommended due to a bug in notice message
handling.
|
| Warning |
|
PostgreSQL function names will be changed in 4.2.0 release to confirm current coding
standard. Most of new names will have additional under score(s), e.g. pg_lo_open(). Some functions
are renamed to different name for consistency. e.g. pg_exec() to pg_query(). Older names may be
used in 4.2.0 and a few releases from 4.2.0, but they may be deleted in the future. CVS version has
new function names.
Obsolete pg_connect()/pg_pconnect() may be depreciated to support async connect feature in
the future.
|
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
an open source descendant of this original Berkeley code.
PostgreSQL database is Open Source product and available without cost. To use PostgreSQL
support, you need PostgreSQL 6.5 or later. PostgreSQL 7.0 or later to enable all PostgreSQL module
feature. PostgreSQL supports many character encoding including multibyte character encoding. The
current version and more information about PostgreSQL is available at www.postgresql.org.
In order to enable PostgreSQL support, "--with-pgsql[=DIR]" is required when you compile
PHP. If shared object module is available, PostgreSQL module may be loaded using extension directive in php.ini or dl() function. Supported ini directives are described in php.ini-dist
file which comes with source distribution.
Not all functions are supported by all builds. It depends on your libpq (The PostgreSQL C
Client interface) version and how libpq is compiled. If there is missing function, libpq does not
support the feature required for the function.
It is also important that you use newer libpq than PostgreSQL Server to be connected. If
you use libpq older than PostgreSQL Server expects, you may have problems.
Since version 6.3 (03/02/1998) PostgreSQL uses unix domain sockets by default. TCP port
will not be opened by default. 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 |
PHP |
Status |
| 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.php on line 20. |
| postmaster -i ∓ |
pg_connect("host=localhost dbname=MyDbName"); |
OK |
A connection to PostgreSQL server can be established with the following value pairs set in
the command string: $conn = pg_connect("host=myHost port=myPort tty=myTTY options=myOptions
dbname=myDB user=myUser password=myPassword ");
The previous syntax of:
$conn = pg_connect ("host", "port", "options", "tty",
"dbname") has been deprecated.
Environmental variable affects PostgreSQL server/client behavior. For example, PostgreSQL
module will lookup PGHOST environment variable when hostname is omitted in connection string.
Supported environment variables are different from version to version. Refer to PostgreSQL
Programmer's Manual (libpq - Environment Variables) for details.
From PostgreSQL 7.1.0, text data type has 1GB as its max size. Older PostgreSQL's text
data type is limited by block size. (Default 8KB. Max 32KB defined at compile time)
To use the large object (lo) interface, it is required to enclose large object functions
within a transaction block. A transaction block starts with a SQL statement 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
<?php
$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, "large object data");
pg_loclose ($handle);
pg_exec ($database, "commit");
?>
|
|
Do not close connection resource before closing large object resource.
- Table of Contents
- pg_close -- Close a PostgreSQL connection
- pg_cmdtuples -- Returns number of affected
records(tuples)
- pg_connect -- Open a PostgreSQL
connection
- pg_dbname -- Get the database name
- pg_end_copy -- Sync with PostgreSQL
backend
- pg_errormessage -- Get the last error
message string of a connection
- 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 result memory
- pg_getlastoid -- Returns the last object's
oid
- pg_host -- Returns the host name associated with
the connection
- pg_last_notice -- Returns the last notice
message from PostgreSQL server
- 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 persistent 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
resource
- 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
- pg_get_result -- Get asynchronous query
result
- pg_request_cancel -- Cancel
request
- pg_is_busy -- Get connection is busy or
not
- pg_send_query -- Send asynchronous
query
- pg_cancel_query -- Cancel request
- pg_connection_busy -- Get connection
is busy or not
- pg_connection_reset -- Reset
connection (reconnect)
- pg_connection_status -- Get
connection status
- pg_copy_from -- No description given
yet
- pg_copy_to -- Send null-terminated string to
backend server
- pg_escape_bytea -- Escape binary for
bytea type
- pg_escape_string -- Escape string for
text/char type
- pg_lo_close -- Close a large object
- pg_lo_seek -- Seeks position of large
object
- pg_lo_tell -- Returns current position of
large object
- pg_result_error -- Get error message
associated with result
- pg_result_status -- Get status of query
result
|