1999-06-06 18:51:02 +00:00
<reference id="ref.pgsql">
<title>PostgreSQL functions</title>
<titleabbrev>PostgreSQL</titleabbrev>
<partintro>
<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 a public-domain, open source
1999-10-20 22:41:42 +00:00
descendant of this original Berkeley code.</para>
1999-06-06 18:51:02 +00:00
<para>
PostgreSQL is available without cost. The current version is
1999-10-20 22:41:42 +00:00
available at <ulink url="http://www.postgresql.org/">www.PostgreSQL.org</ulink>.</para>
1999-06-06 18:51:02 +00:00
<para>
Since version 6.3 (03/02/1998) PostgreSQL use unix domain sockets,
a table is given to this new 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
socket".
<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 &</entry>
<entry>pg_connect("", "", "", "", "dbname");</entry>
<entry>OK</entry>
</row>
<row>
<entry>postmaster -i &</entry>
<entry>pg_connect("", "", "", "", "dbname");</entry>
<entry>OK</entry>
</row>
<row>
<entry>postmaster &</entry>
<entry>pg_connect("localhost", "", "", "", "dbname");</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.php3 on line 20.</entry>
</row>
<row>
<entry>postmaster -i &</entry>
<entry>pg_connect("localhost", "", "", "", "dbname");</entry>
<entry>OK</entry>
</row>
</tbody>
</tgroup>
1999-10-20 22:41:42 +00:00
</table></para>
1999-06-06 18:51:02 +00:00
<para>
One can also establish a connection with the following command:
1999-10-20 22:41:42 +00:00
<command>$conn = pg_Connect("host=localhost port=5432 dbname=chris");</command></para>
1999-06-06 18:51:02 +00:00
<para>
To use the large object (lo) interface, it is necessary to enclose
it within a transaction block. A transaction block starts with a
<command>begin</command> and if the transaction was valid ends
with <command>commit</command> and <command>end</command>. If the
transaction fails the transaction should be closed with
<command>abort</command> and <command>rollback</command>.
<example>
<title>Using Large Objects</title>
1999-10-20 22:41:42 +00:00
<programlisting role="php">
1999-06-06 18:51:02 +00:00
<?php
$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")
?>
</programlisting>
1999-10-20 22:41:42 +00:00
</example></para>
1999-06-06 18:51:02 +00:00
</partintro>
<refentry id="function.pg-close">
<refnamediv>
<refname>pg_Close</refname>
<refpurpose>closes a PostgreSQL connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>bool <function>pg_close</function></funcdef>
<paramdef>int <parameter>connection</parameter></paramdef>
</funcsynopsis>
<para>
Returns false if connection is not a valid connection index, true
otherwise. Closes down the connection to a PostgreSQL database
1999-10-20 22:41:42 +00:00
associated with the given connection index.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-cmdtuples">
<refnamediv>
<refname>pg_cmdTuples</refname>
<refpurpose>returns number of affected tuples</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_cmdtuples</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcsynopsis>
<para>
pg_cmdTuples() returns the number of tuples (instances) affected
by INSERT, UPDATE, and DELETE queries. If no tuple is affected the
function will return 0.
<example>
<title>pg_cmdtuples</title>
1999-10-20 22:41:42 +00:00
<programlisting role="php">
1999-06-06 18:51:02 +00:00
<?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples . " <- cmdtuples affected.";
?>
</programlisting>
1999-10-20 22:41:42 +00:00
</example></para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-connect">
<refnamediv>
<refname>pg_Connect</refname>
<refpurpose>opens a connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_connect</function></funcdef>
<paramdef>string <parameter>host</parameter></paramdef>
<paramdef>string <parameter>port</parameter></paramdef>
<paramdef>string <parameter>options</parameter></paramdef>
<paramdef>string <parameter>tty</parameter></paramdef>
<paramdef>string <parameter>dbname</parameter></paramdef>
</funcsynopsis>
<para>
Returns a connection index on success, or false if the connection
could not be made. Opens a connection to a PostgreSQL
database. Each of the arguments should be a quoted string,
including the port number. The options and tty arguments are
optional and can be left out. This function returns a connection
index that is needed by other PostgreSQL functions. You can have
1999-10-20 22:41:42 +00:00
multiple connections open at once.</para>
1999-06-06 18:51:02 +00:00
<para>
A connection can also established with the following command:
<command>$conn = pg_connect("dbname=marliese port=5432");</command>
Other parameters besides <parameter>dbname</parameter> and
<parameter>port</parameter> are <parameter>host</parameter>,
1999-09-06 13:29:28 +00:00
<parameter>tty</parameter>, <parameter>options</parameter>,
1999-10-20 22:41:42 +00:00
<parameter>user</parameter> and <parameter>password</parameter>.</para>
1999-06-06 18:51:02 +00:00
<para>
1999-10-20 22:41:42 +00:00
See also <function>pg_pConnect</function>.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-dbname">
<refnamediv>
<refname>pg_DBname</refname>
<refpurpose>database name</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>pg_dbname</function></funcdef>
<paramdef>int <parameter>connection</parameter></paramdef>
</funcsynopsis>
<para>
Returns the name of the database that the given PostgreSQL
connection index is connected to, or false if connection is not a
1999-10-20 22:41:42 +00:00
valid connection index.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-errormessage">
<refnamediv>
<refname>pg_ErrorMessage</refname>
<refpurpose>error message</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>pg_errormessage</function></funcdef>
<paramdef>int <parameter>connection</parameter></paramdef>
</funcsynopsis>
<para>
Returns a string containing the error message, false on failure.
Details about the error probably cannot be retrieved using the
pg_errormessage() function if an error occured
on the last database action for which a valid connection exists,
this function will return a string containing the error message
1999-10-20 22:41:42 +00:00
generated by the backend server.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-exec">
<refnamediv>
<refname>pg_Exec</refname>
<refpurpose>execute a query</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_exec</function></funcdef>
<paramdef>int <parameter>connection</parameter></paramdef>
<paramdef>string <parameter>query</parameter></paramdef>
</funcsynopsis>
<para>
Returns a result index if query could be executed, false on
failure or if connection is not a valid connection index. Details
about the error can be retrieved using the
<function>pg_ErrorMessage</function> function if connection is
valid. Sends an SQL statement to the PostgreSQL database
specified by the connection index. The connection must be a valid
index that was returned by <function>pg_Connect</function>. The
return value of this function is an index to be used to access
the results from other PostgreSQL functions.
<note><simpara>
1999-06-19 22:12:06 +00:00
PHP/FI returned 1 if the query was not expected to return data
1999-06-06 18:51:02 +00:00
(inserts or updates, for example) and greater than 1 even on
selects that did not return anything. No such assumption can be
1999-06-19 22:12:06 +00:00
made in PHP.
1999-10-20 22:41:42 +00:00
</simpara></note></para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-fetch-array">
<refnamediv>
<refname>pg_Fetch_Array</refname>
<refpurpose>fetch row as array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>array <function>pg_fetch_array</function></funcdef>
<paramdef>int <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
1999-07-19 21:10:47 +00:00
<paramdef>int
<parameter><optional>result_type</optional></parameter>
</paramdef>
1999-06-06 18:51:02 +00:00
</funcsynopsis>
<para>
Returns: An array that corresponds to the fetched row, or false
1999-10-20 22:41:42 +00:00
if there are no more rows.</para>
1999-06-06 18:51:02 +00:00
<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 of the result array, it also stores
1999-10-20 22:41:42 +00:00
the data in associative indices, using the field names as keys.</para>
1999-07-19 21:10:47 +00:00
<para>
The third optional argument <parameter>result_type</parameter> in
<function>pg_fetch_array</function> is a constant and can take the
following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH.
<note>
<para>
1999-10-20 22:41:42 +00:00
<parameter>Result_type</parameter> was added in PHP 4.0.</para>
</note></para>
1999-06-06 18:51:02 +00:00
<para>
An important thing to note is that using
<function>pg_fetch_array</function> is NOT significantly
slower than using <function>pg_fetch_row</function>, while it
1999-10-20 22:41:42 +00:00
provides a significant added value.</para>
1999-06-06 18:51:02 +00:00
<para>
For further details, also see
<function>pg_fetch_row</function>
</para>
<example>
<title>PostgreSQL fetch array</title>
1999-10-20 22:41:42 +00:00
<programlisting role="php">
1999-06-06 18:51:02 +00:00
<?php
$conn = pg_pconnect("","","","","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);
echo $arr[0] . " <- array\n";
$arr = pg_fetch_array ($result, 1);
echo $arr["author"] . " <- array\n";
?>
</programlisting>
</example>
</refsect1>
</refentry>
<refentry id="function.pg-fetch-object">
<refnamediv>
<refname>pg_Fetch_Object</refname>
<refpurpose>fetch row as object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>object <function>pg_fetch_object</function></funcdef>
<paramdef>int <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
1999-07-19 21:10:47 +00:00
<paramdef>int
1999-07-19 21:25:52 +00:00
<parameter><optional>result_type</optional></parameter>
1999-07-19 21:10:47 +00:00
</paramdef>
1999-06-06 18:51:02 +00:00
</funcsynopsis>
<para>
Returns: An object with properties that correspond to the fetched
1999-10-20 22:41:42 +00:00
row, or false if there are no more rows.</para>
1999-06-06 18:51:02 +00:00
<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
1999-10-20 22:41:42 +00:00
their offsets (numbers are illegal property names).</para>
1999-07-19 21:10:47 +00:00
<para>
The third optional argument <parameter>result_type</parameter> in
<function>pg_fetch_object</function> is a constant and can take the
following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH.
<note>
<para>
1999-10-20 22:41:42 +00:00
<parameter>Result_type</parameter> was added in PHP 4.0.</para>
</note></para>
1999-06-06 18:51:02 +00:00
<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
1999-10-20 22:41:42 +00:00
insignificant).</para>
1999-06-06 18:51:02 +00:00
<para> See also: <function>pg_fetch_array</function> and
<function>pg_fetch_row</function>.
<example>
<title>Postgres fetch object</title>
1999-10-20 22:41:42 +00:00
<programlisting role="php">
1999-06-06 18:51:02 +00:00
<?php
$database = "verlag";
$db_conn = pg_connect ("localhost", "5432", "", "", $database);
if (!$db_conn): ?>
<H1>Failed connecting to postgres database <? echo $database ?></H1> <?
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++;
endwhile; ?>
1999-06-15 20:59:47 +00:00
<PRE><?php
1999-06-06 18:51:02 +00:00
$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++;
endwhile;
echo "----------\n"; ?>
1999-06-07 14:43:43 +00:00
</PRE> <?php
1999-06-06 18:51:02 +00:00
pg_freeResult ($qu);
pg_close ($db_conn);
?>
</programlisting>
1999-10-20 22:41:42 +00:00
</example></para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-fetch-row">
<refnamediv>
<refname>pg_Fetch_Row</refname>
<refpurpose>get row as enumerated array</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>array <function>pg_fetch_row</function></funcdef>
<paramdef>int <parameter>result</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
</funcsynopsis>
<para>
Returns: An array that corresponds to the fetched row, or false
1999-10-20 22:41:42 +00:00
if there are no more rows.</para>
1999-06-06 18:51:02 +00:00
<para>
<function>pg_fetch_row</function> fetches one row of data from
the result associated with the specified result identifier. The
row is returned as an array. Each result column is stored in an
1999-10-20 22:41:42 +00:00
array offset, starting at offset 0.</para>
1999-06-06 18:51:02 +00:00
<para>
Subsequent call to <function>pg_fetch_row</function> would
return the next row in the result set, or false if there are no
1999-10-20 22:41:42 +00:00
more rows.</para>
1999-06-06 18:51:02 +00:00
<para>
See also: <function>pg_fetch_array</function>,
<function>pg_fetch_object</function>,
<function>pg_result</function>.
<example>
<title>Postgres fetch row</title>
1999-10-20 22:41:42 +00:00
<programlisting role="php">
1999-06-06 18:51:02 +00:00
<?php
$conn = pg_pconnect("","","","","publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
$result = pg_Exec ($conn, "SELECT * FROM authors");
if (!$result) {
echo "An error occured.\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";
?>
</programlisting>
1999-10-20 22:41:42 +00:00
</example></para>
1999-06-06 18:51:02 +00:00
</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>
<funcdef>int <function>pg_fieldisnull</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>row</parameter></paramdef>
<paramdef>mixed <parameter>field</parameter></paramdef>
</funcsynopsis>
<para>
Test if a field is NULL or not. Returns 0 if the field in the
given row is not NULL. Returns 1 if the field in the given row is
NULL. Field can be specified as number or fieldname. Row
1999-10-20 22:41:42 +00:00
numbering starts at 0.</para>
1999-06-06 18:51:02 +00:00
</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>
<funcdef>string <function>pg_fieldname</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcsynopsis>
<para>
pg_FieldName() will return the name of the field occupying the
given column number in the given PostgreSQL result identifier.
1999-10-20 22:41:42 +00:00
Field numbering starts from 0.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-fieldnum">
<refnamediv>
<refname>pg_FieldNum</refname>
<refpurpose>Returns the number of a column</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_fieldnum</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>string <parameter>field_name</parameter></paramdef>
</funcsynopsis>
<para>
pg_FieldNum() will return the number of the column slot that
corresponds to the named field in the given PosgreSQL result
identifier. Field numbering starts at 0. This function will
1999-10-20 22:41:42 +00:00
return -1 on error.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-fieldprtlen">
<refnamediv>
<refname>pg_FieldPrtLen</refname>
<refpurpose>Returns the printed length</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_fieldprtlen</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>row_number</parameter></paramdef>
<paramdef>string <parameter>field_name</parameter></paramdef>
</funcsynopsis>
<para>
pg_FieldPrtLen() will return the actual printed length (number of
characters) of a specific value in a PostgreSQL result. Row
1999-10-20 22:41:42 +00:00
numbering starts at 0. This function will return -1 on an error.</para>
1999-06-06 18:51:02 +00:00
</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>
<funcdef>int <function>pg_fieldsize</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
1999-07-29 19:51:52 +00:00
<paramdef>int <parameter>field_number</parameter></paramdef>
1999-06-06 18:51:02 +00:00
</funcsynopsis>
<para>
1999-07-29 19:01:14 +00:00
<function>pg_FieldSize</function> will return the internal
storage size (in bytes) of the field number in the given
PostgreSQL result. Field numbering starts at 0. A field size of
-1 indicates a variable length field. This function will return
1999-10-20 22:41:42 +00:00
false on error.</para>
1999-06-06 18:51:02 +00:00
</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>
<funcdef>int <function>pg_fieldtype</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>field_number</parameter></paramdef>
</funcsynopsis>
<para>
pg_FieldType() will return a string containing the type name of
the given field in the given PostgreSQL result identifier. Field
1999-10-20 22:41:42 +00:00
numbering starts at 0.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-freeresult">
<refnamediv>
<refname>pg_FreeResult</refname>
<refpurpose>Frees up memory</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_freeresult</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</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 result identifier as
1999-10-20 22:41:42 +00:00
an argument and the associated result memory will be freed.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-getlastoid">
<refnamediv>
<refname>pg_GetLastOid</refname>
<refpurpose>Returns the last object identifier</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_getlastoid</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_GetLastOid</function> can be used to retrieve the
Oid assigned to an inserted tuple if the result identifier is
used from the last command sent via <function>pg_Exec</function>
and was an SQL INSERT. This function will return a positive
integer if there was a valid Oid. It will return -1 if an error
occured or the last command sent via <function>pg_Exec</function>
1999-10-20 22:41:42 +00:00
was not an INSERT.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-host">
<refnamediv>
<refname>pg_Host</refname>
<refpurpose>Returns the host name</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>pg_host</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcsynopsis>
<para>
pg_Host() will return the host name of the given PostgreSQL
1999-10-20 22:41:42 +00:00
connection identifier is connected to.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-loclose">
<refnamediv>
<refname>pg_loclose</refname>
<refpurpose>close a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>void <function>pg_loclose</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_loclose</function> closes an Inversion Large
Object. <parameter>fd</parameter> is a file descriptor for the large
1999-10-20 22:41:42 +00:00
object from <function>pg_loopen</function>.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-locreate">
<refnamediv>
<refname>pg_locreate</refname>
<refpurpose>create a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_locreate</function></funcdef>
<paramdef>int <parameter>conn</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_locreate</function> creates an Inversion Large
Object and returns the oid of the large object.
<parameter>conn</parameter> specifies a valid database connection.
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
1999-10-20 22:41:42 +00:00
6.3 and above).</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-loopen">
<refnamediv>
<refname>pg_loopen</refname>
<refpurpose>open a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_loopen</function></funcdef>
<paramdef>int <parameter>conn</parameter></paramdef>
<paramdef>int <parameter>objoid</parameter></paramdef>
<paramdef>string <parameter>mode</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_loopen</function> open an Inversion Large Object and
returns file descriptor of the large object. The file descriptor
encapsulates information about the connection. Do not close the
connection before closing the large object file descriptor.
<parameter>objoid</parameter> specifies a valid large object oid
1999-10-20 22:41:42 +00:00
and <parameter>mode</parameter> can be either "r", "w", or "rw".</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-loread">
<refnamediv>
<refname>pg_loread</refname>
<refpurpose>read a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>pg_loread</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>int <parameter>len</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_loread</function> reads at most
<parameter>len</parameter> bytes from a large object and
returns it as a string.
<parameter>fd</parameter> specifies a valid large object file
descriptor and<parameter>len</parameter> specifies the maximum
1999-10-20 22:41:42 +00:00
allowable size of the large object segment.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-loreadall">
<refnamediv>
<refname>pg_loreadall</refname>
<refpurpose>read a entire large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>void <function>pg_loreadall</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_loreadall</function> reads a large object and
passes it straight through to the browser after sending all pending
1999-10-20 22:41:42 +00:00
headers. Mainly intended for sending binary data like images or sound.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-lounlink">
<refnamediv>
<refname>pg_lounlink</refname>
<refpurpose>delete a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>void <function>pg_lounlink</function></funcdef>
<paramdef>int <parameter>conn</parameter></paramdef>
<paramdef>int <parameter>lobjid</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_lounlink</function> deletes a large object with the
1999-10-20 22:41:42 +00:00
<parameter>lobjid</parameter> identifier for that large object.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-lowrite">
<refnamediv>
<refname>pg_lowrite</refname>
<refpurpose>write a large object</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_lowrite</function></funcdef>
<paramdef>int <parameter>fd</parameter></paramdef>
<paramdef>string <parameter>buf</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_lowrite</function> writes at most to a large object
from a variable <parameter>buf</parameter> and returns the number
of bytes actually written, or false in the case of an error.
<parameter>fd</parameter> is a file descriptor for the large
1999-10-20 22:41:42 +00:00
object from <function>pg_loopen</function>.</para>
1999-06-06 18:51:02 +00:00
</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>
<funcdef>int <function>pg_numfields</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcsynopsis>
<para>
pg_NumFields() will return the number of fields (columns) in a
PostgreSQL result. The argument is a valid result identifier
returned by <function>pg_Exec</function>. This function will
1999-10-20 22:41:42 +00:00
return -1 on error.</para>
1999-06-06 18:51:02 +00:00
</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>
<funcdef>int <function>pg_numrows</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
</funcsynopsis>
<para>
<function>pg_NumRows</function> will return the number of rows in a
PostgreSQL result. The argument is a valid result identifier
returned by <function>pg_Exec</function>. This function will
1999-10-20 22:41:42 +00:00
return -1 on error.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-options">
<refnamediv>
<refname>pg_Options</refname>
<refpurpose>Returns options</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>pg_options</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcsynopsis>
<para>
pg_Options() will return a string containing the options
1999-10-20 22:41:42 +00:00
specified on the given PostgreSQL connection identifier.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-pconnect">
<refnamediv>
<refname>pg_pConnect</refname>
<refpurpose>make a persistent database connection</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_pconnect</function></funcdef>
<paramdef>string <parameter>host</parameter></paramdef>
<paramdef>string <parameter>port</parameter></paramdef>
<paramdef>string <parameter>options</parameter></paramdef>
<paramdef>string <parameter>tty</parameter></paramdef>
<paramdef>string <parameter>dbname</parameter></paramdef>
</funcsynopsis>
<para>
Returns a connection index on success, or false if the connection
could not be made. Opens a persistent connection to a PostgreSQL
database. Each of the arguments should be a quoted string,
including the port number. The options and tty arguments are
optional and can be left out. This function returns a connection
index that is needed by other PostgreSQL functions. You can have
multiple persistent connections open at once. See also
1999-10-20 22:41:42 +00:00
<function>pg_Connect</function>.</para>
1999-06-06 18:51:02 +00:00
<para>
A connection can also established with the following command:
<command>$conn = pg_pconnect("dbname=marliese port=5432");</command>
Other parameters besides <parameter>dbname</parameter> and
<parameter>port</parameter> are <parameter>host</parameter>,
1999-09-06 13:29:28 +00:00
<parameter>tty</parameter>, <parameter>options</parameter>,
1999-10-20 22:41:42 +00:00
<parameter>user</parameter> and <parameter>password</parameter>.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-port">
<refnamediv>
<refname>pg_Port</refname>
<refpurpose>Returns the port number</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>int <function>pg_port</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcsynopsis>
<para>
pg_Port() will return the port number that the given PostgreSQL
1999-10-20 22:41:42 +00:00
connection identifier is connected to.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-result">
<refnamediv>
<refname>pg_Result</refname>
<refpurpose>Returns values from a result identifier</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>mixed <function>pg_result</function></funcdef>
<paramdef>int <parameter>result_id</parameter></paramdef>
<paramdef>int <parameter>row_number</parameter></paramdef>
<paramdef>mixed <parameter>fieldname</parameter></paramdef>
</funcsynopsis>
<para>
pg_Result() will return values from a result identifier produced
by <function>pg_Exec</function>. The
<parameter>row_number</parameter> and
<parameter>fieldname</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
1999-10-20 22:41:42 +00:00
number. Field indices start from 0.</para>
1999-06-06 18:51:02 +00:00
<para>
PostgreSQL has many built in types and only the basic ones are
directly supported here. All forms of integer, boolean and oid
types are returned as integer values. All forms of float, and
real types are returned as double values. All other types,
including arrays are returned as strings formatted in the same
default PostgreSQL manner that you would see in the
1999-10-20 22:41:42 +00:00
<command>psql</command> program.</para>
1999-06-06 18:51:02 +00:00
</refsect1>
</refentry>
<refentry id="function.pg-tty">
<refnamediv>
<refname>pg_tty</refname>
<refpurpose>Returns the tty name</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<funcsynopsis>
<funcdef>string <function>pg_tty</function></funcdef>
<paramdef>int <parameter>connection_id</parameter></paramdef>
</funcsynopsis>
<para>
pg_tty() will return the tty name that server side debugging
1999-10-20 22:41:42 +00:00
output is sent to on the given PostgreSQL connection identifier.</para>
1999-06-06 18:51:02 +00:00
</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
sgml-parent-document:nil
sgml-default-dtd-file:"../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->