php-doc-en/functions/pgsql.xml
2001-12-17 19:58:30 +00:00

2207 lines
70 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.61 $ -->
<reference id="ref.pgsql">
<title>PostgreSQL functions</title>
<titleabbrev>PostgreSQL</titleabbrev>
<partintro>
<warning>
<para>
Use of PostgreSQL module with PHP 4.0.6 is not recommended due to
a bug in notice message handling.
</para>
</warning>
<warning>
<para>
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.
</para>
<para>
Obsolete pg_connect()/pg_pconnect() may be depreciated to support
async connect feature in the future.
</para>
</warning>
<para>
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.
</para>
<para>
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 charactor encoding including
multibyte character encoding. The current version and more
information about PostgreSQL is available at <ulink
url="&url.pgsql;">www.postgresql.org</ulink>.
</para>
<para>
In order to enable PostgreSQL support,
&quot;--enable-pgsql[=DIR]&quot; is required when you compile
PHP. If shared object module is available, PostgreSQL module may
be loaded using <link linkend="ini.extension">extension</link>
directive in php.ini or <function>dl</function>
function. Supported ini directives are described in php.ini-dist
file which comes with source distribution.
</para>
<para>
Not all functions are supported by all builds. It depends on your
libpq (The PostgreSQL C Client interface) versoin and how libpq is
compiled. If there is missing function, libpq does not support
the feature required for the function.
</para>
<para>
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.
</para>
<para>
Since version 6.3 (03/02/1998) PostgreSQL uses unix domain sockets
by default. TCP port will not be openned by default. A table is
shown below describing these new connection possibilities. This
socket will be found in <filename>/tmp/.s.PGSQL.5432</filename>.
This option can be enabled with the '-i' flag to
<command>postmaster</command> and it's meaning is: "listen on
TCP/IP sockets as well as Unix domain sockets".
<table>
<title>Postmaster and PHP</title>
<tgroup cols="3">
<thead>
<row>
<entry>Postmaster</entry>
<entry>PHP</entry>
<entry>Status</entry>
</row>
</thead>
<tbody>
<row>
<entry>postmaster &amp;</entry>
<entry>pg_connect("dbname=MyDbName");</entry>
<entry>OK</entry>
</row>
<row>
<entry>postmaster -i &amp;</entry>
<entry>pg_connect("dbname=MyDbName");</entry>
<entry>OK</entry>
</row>
<row>
<entry>postmaster &amp;</entry>
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
<entry>
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.
</entry>
</row>
<row>
<entry>postmaster -i &amp;</entry>
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
<entry>OK</entry>
</row>
</tbody>
</tgroup>
</table>
</para>
<para>
A connection to PostgreSQL server can be established with the
following value pairs set in the command string: <command>$conn =
pg_connect("host=myHost port=myPort tty=myTTY options=myOptions
dbname=myDB user=myUser password=myPassword ");
</command>
</para>
<para>
The previous syntax of:
<command>
$conn = pg_connect ("host", "port", "options", "tty", "dbname")
</command>
has been deprecated.
</para>
<para>
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.
</para>
<para>
From PostgreSQL 7.1.0, text data type has 1GB as its max
size. Older PostgreSQL's text data type is limitted by block
size. (Default 8KB. Max 32KB defined at compile time)
</para>
<para>
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 <command>begin</command> and if
the transaction was valid ends with <command>commit</command> or
<command>end</command>. If the transaction fails the transaction
should be closed with <command>rollback</command> or
<command>abort</command>.
<example>
<title>Using Large Objects</title>
<programlisting role="php">
<![CDATA[
<?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");
?>
]]>
</programlisting>
</example>
Do not close connection resource before closing large object
resource.
</para>
</partintro>
<refentry id="function.pg-close">
<refnamediv>
<refname>pg_close</refname>
<refpurpose>Close a PostgreSQL connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_close</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_close</function> closes down the non-persistent
connection to a PostgreSQL database associated with the given
<parameter>connection</parameter> resource. It returns &true;, if
<parameter>connection</parameter> is a valid connection resource,
otherwise it return &false;.
</para>
<note>
<para>
<function>pg_close</function> is not usually necessary, as
non-persistent open links are automatically closed at the end of
the script's execution. <function>pg_close</function> will not
close persistent links generated by
<function>pg_pconnect</function>.
</para>
</note>
<para>
If there is open large object resource on the connection, do not
close the connection before closing all large object resources.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-cmdtuples">
<refnamediv>
<refname>pg_cmdtuples</refname>
<refpurpose>Returns number of affected records(tuples)</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_cmdtuples</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_cmdtuples</function> returns the number of tuples
(instances/records/rows) affected by INSERT, UPDATE, and DELETE
queries executed by <function>pg_exec</function>. If no tuple is
affected by this function, it will return 0.
<example>
<title><function>pg_cmdtuples</function></title>
<programlisting role="php">
<![CDATA[
<?php
$result = pg_exec ($conn, "INSERT INTO publisher VALUES ('Author')");
$cmdtuples = pg_cmdtuples ($result);
echo $cmdtuples . " tuples are affected.";
?>
]]>
</programlisting>
</example>
</para>
<para>
See also <function>pg_exec</function> and
<function>pg_numrows</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-connect">
<refnamediv>
<refname>pg_connect</refname>
<refpurpose>Open a PostgreSQL connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>pg_connect</function></funcdef>
<paramdef>string <parameter>connection_string</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_connect</function> returns a connection resource
that is needed by other PostgreSQL functions.
</para>
<para>
<function>pg_connect</function> opens a connection to a
PostgreSQL database specified by
<parameter>connection_string</parameter>. It returns a connection
resource on success. It returns &false;, if the connection could
not be made. <parameter>connection_string</parameter> should be
a quoted string.
<example>
<title>Using pg_connect</title>
<programlisting role="php">
<![CDATA[
<?php
$dbconn = pg_connect ("dbname=mary");
//connect to a database named "mary"
$dbconn2 = pg_connect ("host=localhost port=5432 dbname=mary");
// connect to a database named "mary" on "localhost" at port "5432"
$dbconn3 = pg_connect ("host=sheep port=5432 dbname=mary user=lamb password=foo");
//connect to a database named "mary" on the host "sheep" with a username and password
$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_connect ($conn_string);
//connect to a database named "test" on the host "sheep" with a username and password
?>
]]>
</programlisting>
</example>
The arguments available for
<parameter>connection_string</parameter> includes
<parameter>host</parameter>, <parameter>port</parameter>,
<parameter>tty</parameter>, <parameter>options</parameter>,
<parameter>dbname</parameter>, <parameter>user</parameter>, and
<parameter>password</parameter>.
</para>
<para>
If a second call is made to <function>pg_connect</function> with
the same <parameter>connection_string</parameter> arguments, no
new connection will be established, but instead, the connection
resource of the already opened connection will be returned. You
can have multiple connections to the same database if you use
different connection patameters. (i.e. Use different username)
</para>
<para>
Syntax supports multiple parameters:
<command>$conn = pg_connect ("host", "port", "options", "tty", "dbname")
</command>
has been deprecated.
</para>
<para>
See also <function>pg_pconnect</function>,
<function>pg_close</function>, <function>pg_host</function>,
<function>pg_port</function>, <function>pg_tty</function>,
<function>pg_options</function> and <function>pg_dbname</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-dbname">
<refnamediv>
<refname>pg_dbname</refname>
<refpurpose>Get the database name</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_dbname</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_dbname</function> returns the name of the database
that the given PostgreSQL <parameter>connection</parameter>
resource. It retuns &false;, if <parameter>connection</parameter>
is not a valid PostgreSQL connection resource.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-end-copy">
<refnamediv>
<refname>pg_end_copy</refname>
<refpurpose>Sync with PostgreSQL backend</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_end_copy</function></funcdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_end_copy</function> syncs PostgreSQL frontend
(usually a web server process) with the PostgreSQL server after
doing a copy operation performed by
<function>pg_put_line</function>. <function>pg_end_copy</function>
must be issued, otherwise the PostgreSQL server may get "out of
sync" error with the frontend. It returns &true; for success,
otherwise it returns &false;.
</para>
<para>
For further details and an example, see also
<function>pg_put_line</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-errormessage">
<refnamediv>
<refname>pg_errormessage</refname>
<refpurpose>Get the last error message string of a connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_errormessage</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_errormessage</function> returns a string containing
the last error message for given
<parameter>connection</parameter>. It returns &false; on failure.
</para>
<para>
<function>pg_errormessage</function> returns the last error
message for given <parameter>connection</parameter> and error
message may be overwritten if other libpq functions are called on
the connection. PostgreSQL functions calls libpq functions
internally. Therefore, details about the error may not be
retrieved using the <function>pg_errormessage</function>
function. pg_result_error_message() will be added from 4.2.0 to
get last error for the result resource.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-exec">
<refnamediv>
<refname>pg_exec</refname>
<refpurpose>Execute a query</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>pg_exec</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
<paramdef>string <parameter>query</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_exec</function> returns a query result resource if
query could be executed. It returns &false; on failure or if
connection is not a valid connection. Details about the error can
be retrieved using the <function>pg_errormessage</function>
function if connection is valid.
<function>pg_errormessage</function> sends an SQL statement to
the PostgreSQL database specified by the
<parameter>connection</parameter> resource. The
<parameter>connection</parameter> must be a valid connection that
was returned by <function>pg_connect</function> or
<function>pg_pconnect</function>. The return value of this
function is an query result resource to be used to access the
results from other PostgreSQL functions such as
<function>pg_fetch_array</function>.
<note>
<simpara>
<parameter>connection</parameter> is a optional parameter for
<function>pg_exec</function>. If
<parameter>connection</parameter> is not used, default
connection is used. Default connection is the last connection
made by <function>pg_connect</function> or
<function>pg_pconnect</function>.
</simpara>
<simpara>
Although <parameter>connection</parameter> can be omitted, it
is not recommended, since it could be a cause of hard to find
bug in script.
</simpara>
</note>
</para>
<para>
See also <function>pg_connect</function>,
<function>pg_pconnect</function>,
<function>pg_fetch_array</function>,
<function>pg_fetch_object</function>,
<function>pg_numrows</function>,
and <function>pg_cmdtuples</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fetch-array">
<refnamediv>
<refname>pg_fetch_array</refname>
<refpurpose>Fetch a row as an array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>pg_fetch_array</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
<paramdef>int
<parameter><optional>result_type</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fetch_array</function> returns an array that
corresponds to the fetched row (tuples/records). It returns
&false;, if there are no more rows.
</para>
<para>
<function>pg_fetch_array</function> is an extended version of
<function>pg_fetch_row</function>. In addition to storing the
data in the numeric indices (field index) to the result array, it
also stores the data in associative indices (field name) by
default.
</para>
<para>
<parameter>row</parameter> is row (record) number to be
retrived. First row is 0.
</para>
<para>
<parameter>result_type</parameter> is optional parameter controls
how return value is initilized.
<parameter>result_type</parameter> is a constant and can take the
following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH.
<function>pg_fetch_array</function> returns associative array
that has field name as key for PGSQL_ASSOC. field index as key
with PGSQL_NUM and both field name/index as key with
PGSQL_BOTH. Default is PGSQL_BOTH.
<note>
<para>
<parameter>result_type</parameter> was added in PHP 4.0.
</para>
</note>
</para>
<para>
<function>pg_fetch_array</function> is NOT significantly
slower than using <function>pg_fetch_row</function>, while it
provides a significant ease of use.
</para>
<para>
See also <function>pg_fetch_row</function> and
<function>pg_fetch_object</function> and
<function>pg_result</function>.
</para>
<para>
<example>
<title>PostgreSQL fetch array</title>
<programlisting role="php">
<![CDATA[
<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_exec ($conn, "SELECT * FROM authors");
if (!$result) {
echo "An error occured.\n";
exit;
}
$arr = pg_fetch_array ($result, 0, PGSQL_NUM);
echo $arr[0] . " <- array\n";
$arr = pg_fetch_array ($result, 1, PGSQL_ASSOC);
echo $arr["author"] . " <- array\n";
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fetch-object">
<refnamediv>
<refname>pg_fetch_object</refname>
<refpurpose>Fetch a row as an object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>object <function>pg_fetch_object</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
<paramdef>int
<parameter><optional>result_type</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fetch_object</function> returns an object with
properties that correspond to the fetched row. It returns &false;
if there are no more rows or error.
</para>
<para>
<function>pg_fetch_object</function> is similar to
<function>pg_fetch_array</function>, with one difference - an
object is returned, instead of an array. Indirectly, that means
that you can only access the data by the field names, and not by
their offsets (numbers are illegal property names).
</para>
<para>
<parameter>result_type</parameter> is optional parameter controls
how return value is initilized.
<parameter>result_type</parameter> is a constant and can take the
following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH.
<function>pg_fetch_array</function> returns associative array
that has field name as key for PGSQL_ASSOC. field index as key
with PGSQL_NUM and both field name/index as key with
PGSQL_BOTH. Default is PGSQL_BOTH.
</para>
<para>
<note>
<para>
<parameter>result_type</parameter> was added in PHP 4.0.
</para>
</note>
</para>
<para>
Speed-wise, the function is identical to
<function>pg_fetch_array</function>, and almost as quick as
<function>pg_fetch_row</function> (the difference is
insignificant).
</para>
<para>
See also <function>pg_exec</function>, <function>pg_fetch_array</function>,
<function>pg_fetch_row</function> and <function>pg_result</function>.
</para>
<para>
<example>
<title>Postgres fetch object</title>
<programlisting role="php">
<![CDATA[
<?php
$database = "verlag";
$db_conn = pg_connect ("host=localhost port=5432 dbname=$database");
if (!$db_conn): ?>
<H1>Failed connecting to postgres database <?php echo $database ?></H1> <?php
exit;
endif;
$qu = pg_exec ($db_conn, "SELECT * FROM verlag ORDER BY autor");
$row = 0; // postgres needs a row counter other dbs might not
while ($data = pg_fetch_object ($qu, $row)) {
echo $data->autor." (";
echo $data->jahr ."): ";
echo $data->titel."<BR>";
$row++;
}
?>
<PRE>
<?php
$fields[] = Array ("autor", "Author");
$fields[] = Array ("jahr", " Year");
$fields[] = Array ("titel", " Title");
$row= 0; // postgres needs a row counter other dbs might not
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++;
}
echo "----------\n";
?>
</PRE>
<?php
pg_freeresult ($qu);
pg_close ($db_conn);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fetch-row">
<refnamediv>
<refname>pg_fetch_row</refname>
<refpurpose>Get a row as an enumerated array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>array <function>pg_fetch_row</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fetch_row</function> fetches one row of data from
the result associated with the specified
<parameter>result</parameter> resource. The row (record) is
returned as an array. Each result column is stored in an array
offset, starting at offset 0.
</para>
<para>
It returns an array that corresponds to the fetched row, or &false;
if there are no more rows.
</para>
<para>
See also: <function>pg_exec</function>,
<function>pg_fetch_array</function>,
<function>pg_fetch_object</function> and
<function>pg_result</function>.
</para>
<para>
<example>
<title>Postgres fetch row</title>
<programlisting role="php">
<![CDATA[
<?php
$conn = pg_pconnect ("dbname=publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
echo "An error occured.\n";
exit;
}
$num = pg_numrows($result);
for ($i=0; $i < $num; $i++) {
$r = pg_fetch_row($result, $i);
for ($j=0; $j < count($r); $j++) {
echo "$r[$j]&nbsp;";
}
echo "<BR>";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fieldisnull">
<refnamediv>
<refname>pg_fieldisnull</refname>
<refpurpose>Test if a field is &null;</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_fieldisnull</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
<paramdef>mixed <parameter>field</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fieldisnull</function> test if a field is &null; or
not. It returns 1 if the field in the given row is &null;. It
returns 0 if the field in the given row is NOT &null;. Field can
be specified as colum index (number) or fieldname (string). Row
numbering starts at 0.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fieldname">
<refnamediv>
<refname>pg_fieldname</refname>
<refpurpose>Returns the name of a field</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_fieldname</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fieldname</function> returns the name of the field
occupying the given <parameter>field_number</parameter> in the
given PostgreSQL <parameter>result</parameter> resource. Field
numbering starts from 0.
</para>
<para>
See also <function>pg_filednum</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fieldnum">
<refnamediv>
<refname>pg_fieldnum</refname>
<refpurpose>Returns the field number of the named field</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_fieldnum</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>string <parameter>field_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fieldnum</function> will return the number of the
column (field) slot that corresponds to the
<parameter>field_name</parameter> in the given PosgreSQL
<parameter>result</parameter> resource. Field numbering starts
at 0. This function will return -1 on error.
</para>
<para>
See also <function>pg_fieldname</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fieldprtlen">
<refnamediv>
<refname>pg_fieldprtlen</refname>
<refpurpose>Returns the printed length</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_fieldprtlen</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row_number</parameter></paramdef>
<paramdef>string <parameter>field_name</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fieldprtlen</function> returns the actual printed
length (number of characters) of a specific value in a PostgreSQL
<parameter>result</parameter>. Row numbering starts at 0. This
function will return -1 on an error.
</para>
<para>
See also <function>pg_fieldsize</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fieldsize">
<refnamediv>
<refname>pg_fieldsize</refname>
<refpurpose>
Returns the internal storage size of the named field
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_fieldsize</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fieldsize</function> returns the internal storage
size (in bytes) of the field number in the given PostgreSQL
<parameter>result</parameter>. Field numbering starts at 0. A
field size of -1 indicates a variable length field. This function
will return &false; on error.
</para>
<para>
See also <function>pg_fieldlen</function> and <function>pg_fieldtype</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-fieldtype">
<refnamediv>
<refname>pg_fieldtype</refname>
<refpurpose>
Returns the type name for the corresponding field number
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_fieldtype</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_fieldtype</function> returns a string containing the
type name of the given <parameter>field_number</parameter> in the
given PostgreSQL <parameter>result</parameter> resource. Field
numbering starts at 0.
</para>
<para>
See also <function>pg_fieldlen</function> and <function>pg_fieldname</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-freeresult">
<refnamediv>
<refname>pg_freeresult</refname>
<refpurpose>Free result memory</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_freeresult</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_freeresult</function> only needs to be called if you
are worried about using too much memory while your script is
running. All result memory will automatically be freed when the
script is finished. But, if you are sure you are not going to
need the result data anymore in a script, you may call
<function>pg_freeresult</function> with the
<parameter>result</parameter> resource as an argument and the
associated result memory will be freed. It returns true on success
and false if an error occurs.
</para>
<para>
See also <function>pg_exec</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-getlastoid">
<refnamediv>
<refname>pg_getlastoid</refname>
<refpurpose>Returns the last object's oid</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_getlastoid</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_getlastoid</function> is used to retrieve the
<varname>oid</varname> assigned to an inserted tuple (record) if
the result resource is used from the last command sent via
<function>pg_exec</function> and was an SQL INSERT. Returns a
positive integer if there was a valid <varname>oid</varname>. It
returns &false; if an error occurs or the last command sent via
<function>pg_exec</function> was not an INSERT or INSERT is
failed.
</para>
<para>
See also <function>pg_exec</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-host">
<refnamediv>
<refname>pg_host</refname>
<refpurpose>
Returns the host name associated with the connection
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_host</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_host</function> returns the host name of the given
PostgreSQL <parameter>connection</parameter> resource is
connected to.
</para>
<para>
See also <function>pg_connect</function> and
<function>pg_pconnect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-last-notice">
<refnamediv>
<refname>pg_last_notice</refname>
<refpurpose>
Returns the last notice message from PostgreSQL server
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_last_notice</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_last_notice</function> returns the last notice
message from PostgreSQL server specified by
<parameter>connection</parameter>. PostgreSQL server set notice
message when transaction cannot be continued. There one can avoid
issuing useless SQL using <function>pg_exec</function> using
<function>pg_last_notice</function>. There are other cases that
PostgreSQL server sets notice message. Programmer must check
contents of notice message if it is related to transaction or
not.
</para>
<warning>
<para>
This function is EXPERIMENTAL and it is not fully implemented
yet. <function>pg_last_notice</function> is added form PHP
4.0.6. However, PHP 4.0.6 has problem with notice message
handling. Use of PostgreSQL module with PHP 4.0.6 is not
recommended even if you are not using
<function>pg_last_notice</function>.
</para>
</warning>
<para>
See also <function>pg_exec</function> and <function>pg_errormessage</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-loclose">
<refnamediv>
<refname>pg_loclose</refname>
<refpurpose>Close a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_loclose</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_loclose</function> closes an Inversion Large
Object. <parameter>large_object</parameter> is a resource for the
large object from <function>pg_loopen</function>.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_loopen</function>,
<function>pg_locreate</function> and
<function>pg_loimport</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-locreate">
<refnamediv>
<refname>pg_locreate</refname>
<refpurpose>Create a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_locreate</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_locreate</function> creates an Inversion Large
Object and returns the <varname>oid</varname> of the large
object. <parameter>connection</parameter> specifies a valid
database connection opened by <function>pg_connect</function> or
<function>pg_pconnect</function>. PostgreSQL access modes
INV_READ, INV_WRITE, and INV_ARCHIVE are not supported, the
object is created always with both read and write
access. INV_ARCHIVE has been removed from PostgreSQL itself
(version 6.3 and above). It returns large object oid
otherwise. It retuns &false;, if an error occurred,
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-loexport">
<refnamediv>
<refname>pg_loexport</refname>
<refpurpose>Export a large object to file</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_loexport</function></funcdef>
<paramdef>int
<parameter>oid</parameter>
</paramdef>
<paramdef>string
<parameter>pathname</parameter>
</paramdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
The <parameter>oid</parameter> argument specifies oid of the
large object to export and the <parameter>pathname</parameter>
argument specifies the pathname of the file. It returns &false; if
an error occurred, &true; otherwise.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_loimport</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-loimport">
<refnamediv>
<refname>pg_loimport</refname>
<refpurpose>Import a large object from file</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_loimport</function></funcdef>
<paramdef>string <parameter>pathname</parameter></paramdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
The <parameter>pathname</parameter> argument specifies the
pathname of the file to be imported as a large object. It returns
&false; if an error occurred, oid of the just created large
object otherwise.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
&note.sm.uidcheck;
<para>
See also <function>pg_loexport</function> and
<function>pg_loopen</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-loopen">
<refnamediv>
<refname>pg_loopen</refname>
<refpurpose>Open a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>pg_loopen</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
<paramdef>int <parameter>oid</parameter></paramdef>
<paramdef>string <parameter>mode</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_loopen</function> open an Inversion Large Object and
returns large object resource. The resource encapsulates
information about the connection.
<parameter>oid</parameter> specifies a valid large object oid and
<parameter>mode</parameter> can be either "r", "w", or "rw". It
returns &false; if there is an error.
</para>
<warning>
<para>
Do not close the database connection before closing the large
object resource.
</para>
</warning>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_loclose</function> and
<function>pg_locreate</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-loread">
<refnamediv>
<refname>pg_loread</refname>
<refpurpose>Read a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_loread</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
<paramdef>int <parameter>len</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_loread</function> reads at most
<parameter>len</parameter> bytes from a large object and returns
it as a string. <parameter>large_object</parameter> specifies a
valid large object resource and<parameter>len</parameter>
specifies the maximum allowable size of the large object
segment. It returns &false; if there is an error.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_loreadall</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-loreadall">
<refnamediv>
<refname>pg_loreadall</refname>
<refpurpose>
Read a entire large object and send straight to browser
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_loreadall</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_loreadall</function> reads a large object and passes
it straight through to the browser after sending all pending
headers. Mainly intended for sending binary data like images or
sound. It returns number of bytes read. It returns &false;, if an
error occured.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_loread</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-lounlink">
<refnamediv>
<refname>pg_lounlink</refname>
<refpurpose>Delete a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_lounlink</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
<paramdef>int <parameter>oid</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_lounlink</function> deletes a large object with the
<parameter>oid</parameter>. It rreturn &true; on success,
otherwise returns &false;.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_locreate</function> and
<function>pg_loimport</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-lowrite">
<refnamediv>
<refname>pg_lowrite</refname>
<refpurpose>Write a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_lowrite</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
<paramdef>string <parameter>data</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_lowrite</function> writes at most to a large object
from a variable <parameter>data</parameter> and returns the number
of bytes actually written, or &false; in the case of an error.
<parameter>large_object</parameter> is a large object resource
from <function>pg_loopen</function>.
</para>
<para>
To use the large object (lo) interface, it is necessary to
enclose it within a transaction block.
</para>
<para>
See also <function>pg_locreate</function> and
<function>pg_loopen</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-numfields">
<refnamediv>
<refname>pg_numfields</refname>
<refpurpose>Returns the number of fields</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_numfields</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_numfields</function> returns the number of fields
(columns) in a PostgreSQL <parameter>result</parameter>. The
argument is a result resource returned by
<function>pg_exec</function>. This function will return -1 on
error.
</para>
<para>
See also <function>pg_numrows</function> and
<function>pg_cmdtuples</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-numrows">
<refnamediv>
<refname>pg_numrows</refname>
<refpurpose>Returns the number of rows</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_numrows</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_numrows</function> will return the number of rows in
a PostgreSQL <parameter>result</parameter> resource.
<parameter>result</parameter> is a qeury result resource returned
by <function>pg_exec</function>. This function will return -1 on
error.
</para>
<note>
<para>
Use <function>pg_cmdtuples</function> to get number of rows
affected by INSERT, UPDATE and DELETE query.
</para>
</note>
<para>
See also <function>pg_numfields</function> and
<function>pg_cmdtuples</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-options">
<refnamediv>
<refname>pg_options</refname>
<refpurpose>Get the options associated with the connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_options</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_options</function> will return a string containing
the options specified on the given PostgreSQL
<parameter>connection</parameter> resource.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-pconnect">
<refnamediv>
<refname>pg_pconnect</refname>
<refpurpose>Open a persistent PostgreSQL connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_pconnect</function></funcdef>
<paramdef>string <parameter>connection_string</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_pconnect</function> opens a connection to a
PostgreSQL database. It returns a connection resource that is
needed by other PostgreSQL functions.
</para>
<para>
It returns a connection resource on success, or &false; if the
connection could not be made. The arguments should be within a
quoted string. The arguments available include
<parameter>host</parameter>, <parameter>port</parameter>,
<parameter>tty</parameter>, <parameter>options</parameter>,
<parameter>dbname</parameter>, <parameter>user</parameter>, and
<parameter>password</parameter>.
</para>
<example>
<title>Using pg_connect</title>
<programlisting role="php">
<![CDATA[
<?php
$dbconn = pg_connect ("dbname=mary");
//connect to a database named "mary"
$dbconn2 = pg_connect ("host=localhost port=5432 dbname=mary");
// connect to a database named "mary" on "localhost" at port "5432"
$dbconn3 = pg_connect ("host=sheep port=5432 dbname=mary user=lamb password=foo");
//connect to a database named "mary" on the host "sheep" with a username and password
$conn_string = "host=sheep port=5432 dbname=test user=lamb password=bar";
$dbconn4 = pg_connect ($conn_string);
//connect to a database named "test" on the host "sheep" with a username and password
?>
]]>
</programlisting>
</example>
<para>
If a second call is made to <function>pg_pconnect</function> with
the same arguments, no new connection will be established, but
instead, the connection resource of the already opened connection
will be returned. You can have multiple connections to the same
database if you use different connection patameters. (i.e. Use
different username)
</para>
<para>
Multiple parameters syntax for <function>pg_pconnect</function>
<command>$conn = pg_pconnect ("host", "port", "options", "tty",
"dbname")
</command>
has been deprecated.
</para>
<para>
To enable persistent connection, <link
linkend="ini.pgsql.allow-persistent">pgsql.allow_persistent</link>
php.ini directive must be set to &quot;On&quot;. (Default is On)
Max number of persistent connection can be defined by <link
linkend="ini.pgsql.max-persistent">pgsql.max_persistent</link>
php.ini directive. (Default is -1 which is no limit) Total number
of connection can be set by <link
linkend="ini.pgsql.max-links">pgsql.max_links</link> php.ini
directive.
</para>
<para>
<function>pg_close</function> will not close persistent links
generated by <function>pg_pconnect</function>.
</para>
<para>
See also <function>pg_connect</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-port">
<refnamediv>
<refname>pg_port</refname>
<refpurpose>
Return the port number associated with the connection
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_port</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_port</function> returns the port number that the
given PostgreSQL <parameter>connection</parameter> resource is
connected to.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-put-line">
<refnamediv>
<refname>pg_put_line</refname>
<refpurpose>Send a NULL-terminated string to PostgreSQL backend</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_put_line</function></funcdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
<paramdef>string <parameter>data</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_put_line</function> sends a NULL-terminated string
to the PostgreSQL backend server. This is useful for example for
very high-speed inserting of data into a table, initiated by
starting a PostgreSQL copy-operation. That final NULL-character
is added automatically. It returns &true; if successfull, &false;
otherwise.
</para>
<note>
<para>
Note the application must explicitly send the two characters "\."
on a final line to indicate to the backend that it has finished
sending its data.
</para>
</note>
<para>
See also <function>pg_end_copy</function>.
<example>
<title>High-speed insertion of data into a table</title>
<programlisting role="php">
<![CDATA[
<?php
$conn = pg_pconnect ("dbname=foo");
pg_exec($conn, "create table bar (a int4, b char(16), d float8)");
pg_exec($conn, "copy bar from stdin");
pg_put_line($conn, "3\thello world\t4.5\n");
pg_put_line($conn, "4\tgoodbye world\t7.11\n");
pg_put_line($conn, "\\.\n");
pg_end_copy($conn);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<refentry id="function.pg-result">
<refnamediv>
<refname>pg_result</refname>
<refpurpose>Returns values from a result resource</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>mixed <function>pg_result</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row_number</parameter></paramdef>
<paramdef>mixed <parameter>field</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_result</function> returns values from a
<parameter>result</parameter> resource returned by
<function>pg_exec</function>. <parameter>row_number</parameter>
is integer. <parameter>field</parameter> is field name(string)
or field index (integer). The <parameter>row_number</parameter>
and <parameter>field</parameter> sepcify what cell in the table
of results to return. Row numbering starts from 0. Instead of
naming the field, you may use the field index as an unquoted
number. Field indices start from 0.
</para>
<para>
PostgreSQL has many built in types and only the basic ones are
directly supported here. All forms of <type>integer</type>,
<type>boolean</type> and void
<!-- FIXME: is that still true? PHP supports boolean&null now... -->
<!-- Yes, supporting boolean&null breaks scripts. pg_fetch_array()
can be used instead. I might take of this issue with additional
ini directive. yohgaki@php.net -->
types are
returned as <type>integer</type> values. All forms of float, and
real types are returned as <type>float</type> values. All other
types, including arrays are returned as strings formatted in the
same default PostgreSQL manner that you would see in the
<command>psql</command> program.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-set-client-encoding">
<refnamediv>
<refname>pg_set_client_encoding</refname>
<refpurpose>
Set the client encoding
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_set_client_encoding</function></funcdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
<paramdef>string <parameter>encoding</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_set_client_encoding</function> sets the client
encoding and return 0 if success or -1 if error.
</para>
<para>
<parameter>encoding</parameter> is the client
encoding and can be either :
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE,
MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT,
SJIS, BIG5, WIN1250.
</para>
<note>
<para>
This function requires PHP-4.0.3 or higher and PostgreSQL-7.0 or
higher. Supported encoding depends on PostgreSQL version. Refer
to PostgreSQL manaul for details.
</para>
<para>
The function used to be called
<function>pg_setclientencoding</function>.
</para>
</note>
<para>
See also <function>pg_client_encoding</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-client-encoding">
<refnamediv>
<refname>pg_client_encoding</refname>
<refpurpose>
Get the client encoding
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_client_encoding</function></funcdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_client_encoding</function> returns the client
encoding as the string. The returned string should be either :
SQL_ASCII, EUC_JP, EUC_CN, EUC_KR, EUC_TW, UNICODE,
MULE_INTERNAL, LATINX (X=1...9), KOI8, WIN, ALT, SJIS, BIG5,
WIN1250.
</para>
<note>
<para>
This function requires PHP-4.0.3 or higher and PostgreSQL-7.0 or
higher. If libpq is compiled without multibyte encoding support,
<function>pg_set_client_encoding</function> always return
&quot;SQL_ASCII&quot;. Supported encoding depends on PostgreSQL
version. Refer to PostgreSQL manaul for details to enable
multibyte support and encoding supported.
</para>
<para>
The function used to be called
<function>pg_clientencoding</function>.
</para>
</note>
<para>
See also <function>pg_set_client_encoding</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-trace">
<refnamediv>
<refname>pg_trace</refname>
<refpurpose>Enable tracing a PostgreSQL connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_trace</function></funcdef>
<paramdef>string
<parameter>pathname</parameter>
</paramdef>
<paramdef>string
<parameter><optional>mode</optional></parameter>
</paramdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_trace</function> enables tracing of the PostgreSQL
frontend/backend communication to a debugging file specified as
<parameter>pathname</parameter>. To fully understand the results,
one needs to be familiar with the internals of PostgreSQL
communication protocol. For those who are not, it can still be
useful for tracing errors in queries sent to the server, you
could do for example <command>grep '^To backend'
trace.log</command> and see what query actually were sent to the
PostgreSQL server. For more information, refer to PostgreSQL
manual.
</para>
<para>
<parameter>Filename</parameter> and <parameter>mode</parameter>
are the same as in <function>fopen</function>
(<parameter>mode</parameter> defaults to 'w'),
<parameter>connection</parameter> specifies the connection to
trace and defaults to the last one opened.
</para>
<para>
It returns &true; if <parameter>pathname</parameter> could be opened
for logging, &false; otherwise.
</para>
<para>
See also <function>fopen</function> and
<function>pg_untrace</function>.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-tty">
<refnamediv>
<refname>pg_tty</refname>
<refpurpose>
Return the tty name associated with the connection
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_tty</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
<function>pg_tty</function> returns the tty name that server
side debugging output is sent to on the given PostgreSQL
<parameter>connection</parameter> resource.
</para>
</refsect1>
</refentry>
<refentry id="function.pg-untrace">
<refnamediv>
<refname>pg_untrace</refname>
<refpurpose>Disable tracing of a PostgreSQL connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_untrace</function></funcdef>
<paramdef>resource
<parameter><optional>connection</optional></parameter>
</paramdef>
</funcprototype>
</funcsynopsis>
<para>
Stop tracing started by <function>pg_trace</function>.
<parameter>connection</parameter> specifies the connection that was
traced and defaults to the last one opened.
</para>
<para>
Returns always &true;.
</para>
<para>
See also <function>pg_trace</function>.
</para>
</refsect1>
</refentry>
<refentry id='function.pg-get-result'>
<refnamediv>
<refname>pg_get_result</refname>
<refpurpose>
Get asynchronous query result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>resource <function>pg_get_result</function></funcdef>
<paramdef>resource <parameter><optional>connection</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-request-cancel'>
<refnamediv>
<refname>pg_request_cancel</refname>
<refpurpose>
Cancel request
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_request_cancel</function></funcdef>
<paramdef>resource <parameter><optional>connection</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-is-busy'>
<refnamediv>
<refname>pg_is_busy</refname>
<refpurpose>
Get connection is busy or not
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_is_busy</function></funcdef>
<paramdef>resource <parameter><optional>connection</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-send-query'>
<refnamediv>
<refname>pg_send_query</refname>
<refpurpose>
Send asynchronous query
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_send_query</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
<paramdef>string <parameter>qeury</parameter></paramdef>
</funcprototype>
<funcprototype>
<funcdef>bool <function>pg_send_query</function></funcdef>
<paramdef>string <parameter>qeury</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-cancel-query'>
<refnamediv>
<refname>pg_cancel_query</refname>
<refpurpose>
Cancel request
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_cancel_query</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-connection-busy'>
<refnamediv>
<refname>pg_connection_busy</refname>
<refpurpose>
Get connection is busy or not
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_connection_busy</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-connection-reset'>
<refnamediv>
<refname>pg_connection_reset</refname>
<refpurpose>
Reset connection (reconnect)
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_connection_reset</function></funcdef>
<paramdef>resource <parameter>connection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-connection-status'>
<refnamediv>
<refname>pg_connection_status</refname>
<refpurpose>
Get connection status
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_connection_status</function></funcdef>
<paramdef>resource <parameter>connnection</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-copy-from'>
<refnamediv>
<refname>pg_copy_from</refname>
<refpurpose>
No description given yet
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_copy_from</function></funcdef>
<paramdef>int <parameter>connection</parameter></paramdef>
<paramdef>string <parameter>table_name</parameter></paramdef>
<paramdef>array <parameter>rows</parameter></paramdef>
<paramdef>string <parameter><optional>delimiter</optional></parameter></paramdef>
<paramdef>string <parameter><optional>null_as</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-copy-to'>
<refnamediv>
<refname>pg_copy_to</refname>
<refpurpose>
Send null-terminated string to backend server
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_copy_to</function></funcdef>
<paramdef>int <parameter>connection</parameter></paramdef>
<paramdef>string <parameter>table_name</parameter></paramdef>
<paramdef>string <parameter><optional>delimiter</optional></parameter></paramdef>
<paramdef>string <parameter><optional>null_as</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-escape-bytea'>
<refnamediv>
<refname>pg_escape_bytea</refname>
<refpurpose>
Escape binary for bytea type
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_escape_bytea</function></funcdef>
<paramdef>string <parameter>data</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-escape-string'>
<refnamediv>
<refname>pg_escape_string</refname>
<refpurpose>
Escape string for text/char type
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_escape_string</function></funcdef>
<paramdef>string <parameter>data</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-lo-close'>
<refnamediv>
<refname>pg_lo_close</refname>
<refpurpose>
Close a large object
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_lo_close</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-lo-seek'>
<refnamediv>
<refname>pg_lo_seek</refname>
<refpurpose>
Seeks position of large object
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>bool <function>pg_lo_seek</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
<paramdef>int <parameter>offset</parameter></paramdef>
<paramdef>int <parameter><optional>whence</optional></parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-lo-tell'>
<refnamediv>
<refname>pg_lo_tell</refname>
<refpurpose>
Returns current position of large object
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_lo_tell</function></funcdef>
<paramdef>resource <parameter>large_object</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-result-error'>
<refnamediv>
<refname>pg_result_error</refname>
<refpurpose>
Get error message associated with result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>string <function>pg_result_error</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
<refentry id='function.pg-result-status'>
<refnamediv>
<refname>pg_result_status</refname>
<refpurpose>
Get status of query result
</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcprototype>
<funcdef>int <function>pg_result_status</function></funcdef>
<paramdef>resource <parameter>result</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
&warn.undocumented.func;
</para>
</refsect1>
</refentry>
</reference>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->