PostgreSQL functions
PostgreSQL
Postgres, developed originally in the UC Berkeley Computer Science
Department, pioneered many of the object-relational concepts now
becoming available in some commercial databases. It provides
SQL92/SQL3 language support, transaction integrity, and type
extensibility. PostgreSQL is a public-domain, open source
descendant of this original Berkeley code.
PostgreSQL is available without cost. The current version is
available at www.PostgreSQL.org.
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 /tmp/.s.PGSQL.5432. This option can
be enabled with the '-i' flag to postmaster and
it's meaning is: "listen on TCP/IP sockets as well as Unix domain
socket".
Postmaster and PHP
Postmaster
PHP
Status
postmaster &
pg_connect("", "", "", "", "dbname");
OK
postmaster -i &
pg_connect("", "", "", "", "dbname");
OK
postmaster &
pg_connect("localhost", "", "", "", "dbname");
Unable to connect to PostgreSQL server: connectDB() failed: Is the postmaster running and accepting TCP/IP (with -i) connection at 'localhost' on port '5432'? in /path/to/file.php3 on line 20.
postmaster -i &
pg_connect("localhost", "", "", "", "dbname");
OK
One can also establish a connection with the following command:
$conn = pg_Connect("host=localhost port=5432 dbname=chris");
To use the large object (lo) interface, it is necessary to enclose
it within a transaction block. A transaction block starts with a
begin and if the transaction was valid ends
with commit and end. If the
transaction fails the transaction should be closed with
abort and rollback.
Using Large Objects
<?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")
?>
pg_Close
closes a PostgreSQL connection
Description
bool pg_close
int connection
Returns false if connection is not a valid connection index, true
otherwise. Closes down the connection to a PostgreSQL database
associated with the given connection index.
pg_cmdTuples
returns number of affected tuples
Description
int pg_cmdtuples
int result_id
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.
pg_cmdtuples
<?php
$result = pg_exec($conn, "INSERT INTO verlag VALUES ('Autor')");
$cmdtuples = pg_cmdtuples($result);
echo $cmdtuples . " <- cmdtuples affected.";
?>
pg_Connect
opens a connection
Description
int pg_connect
string host
string port
string options
string tty
string dbname
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
multiple connections open at once.
A connection can also established with the following command:
$conn = pg_connect("dbname=marliese port=5432");
Other parameters besides dbname and
port are host,
tty and options.
See also pg_pConnect.
pg_DBname
database name
Description
string pg_dbname
int connection
Returns the name of the database that the given PostgreSQL
connection index is connected to, or false if connection is not a
valid connection index.
pg_ErrorMessage
error message
Description
string pg_errormessage
int connection
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
generated by the backend server.
pg_Exec
execute a query
Description
int pg_exec
int connection
string query
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
pg_ErrorMessage 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 pg_Connect. The
return value of this function is an index to be used to access
the results from other PostgreSQL functions.
PHP/FI returned 1 if the query was not expected to return data
(inserts or updates, for example) and greater than 1 even on
selects that did not return anything. No such assumption can be
made in PHP.
pg_Fetch_Array
fetch row as array
Description
array pg_fetch_array
int result
int row
int
result_type
Returns: An array that corresponds to the fetched row, or false
if there are no more rows.
pg_fetch_array is an extended version of
pg_fetch_row. In addition to storing the
data in the numeric indices of the result array, it also stores
the data in associative indices, using the field names as keys.
The third optional argument result_type in
pg_fetch_array is a constant and can take the
following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH.
Result_type was added in PHP 4.0.
An important thing to note is that using
pg_fetch_array is NOT significantly
slower than using pg_fetch_row, while it
provides a significant added value.
For further details, also see
pg_fetch_row
PostgreSQL fetch array
<?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";
?>
pg_Fetch_Object
fetch row as object
Description
object pg_fetch_object
int result
int row
int
result_type
Returns: An object with properties that correspond to the fetched
row, or false if there are no more rows.
pg_fetch_object is similar to
pg_fetch_array, 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).
The third optional argument result_type in
pg_fetch_object is a constant and can take the
following values: PGSQL_ASSOC, PGSQL_NUM, and PGSQL_BOTH.
Result_type was added in PHP 4.0.
Speed-wise, the function is identical to
pg_fetch_array, and almost as quick as
pg_fetch_row (the difference is
insignificant).
See also: pg_fetch_array and
pg_fetch_row.
Postgres fetch object
<?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; ?>
<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++;
endwhile;
echo "----------\n"; ?>
</PRE> <?php
pg_freeResult ($qu);
pg_close ($db_conn);
?>
pg_Fetch_Row
get row as enumerated array
Description
array pg_fetch_row
int result
int row
Returns: An array that corresponds to the fetched row, or false
if there are no more rows.
pg_fetch_row 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
array offset, starting at offset 0.
Subsequent call to pg_fetch_row would
return the next row in the result set, or false if there are no
more rows.
See also: pg_fetch_array,
pg_fetch_object,
pg_result.
Postgres fetch row
<?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";
?>
pg_FieldIsNull
Test if a field is NULL
Description
int pg_fieldisnull
int result_id
int row
mixed field
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
numbering starts at 0.
pg_FieldName
Returns the name of a field
Description
string pg_fieldname
int result_id
int field_number
pg_FieldName() will return the name of the field occupying the
given column number in the given PostgreSQL result identifier.
Field numbering starts from 0.
pg_FieldNum
Returns the number of a column
Description
int pg_fieldnum
int result_id
string field_name
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
return -1 on error.
pg_FieldPrtLen
Returns the printed length
Description
int pg_fieldprtlen
int result_id
int row_number
string field_name
pg_FieldPrtLen() will return the actual printed length (number of
characters) of a specific value in a PostgreSQL result. Row
numbering starts at 0. This function will return -1 on an error.
pg_FieldSize Returns the internal
storage size of the named field
Description
int pg_fieldsize
int result_id
int field_number
pg_FieldSize 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
false on error.
pg_FieldType
Returns the type name for the corresponding field number
Description
int pg_fieldtype
int result_id
int field_number
pg_FieldType() will return a string containing the type name of
the given field in the given PostgreSQL result identifier. Field
numbering starts at 0.
pg_FreeResult
Frees up memory
Description
int pg_freeresult
int result_id
pg_FreeResult 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
pg_FreeResult with the result identifier as
an argument and the associated result memory will be freed.
pg_GetLastOid
Returns the last object identifier
Description
int pg_getlastoid
int result_id
pg_GetLastOid can be used to retrieve the
Oid assigned to an inserted tuple if the result identifier is
used from the last command sent via pg_Exec
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 pg_Exec
was not an INSERT.
pg_Host
Returns the host name
Description
string pg_host
int connection_id
pg_Host() will return the host name of the given PostgreSQL
connection identifier is connected to.
pg_loclose
close a large object
Description
void pg_loclose
int fd
pg_loclose closes an Inversion Large
Object. fd is a file descriptor for the large
object from pg_loopen.
pg_locreate
create a large object
Description
int pg_locreate
int conn
pg_locreate creates an Inversion Large
Object and returns the oid of the large object.
conn 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
6.3 and above).
pg_loopen
open a large object
Description
int pg_loopen
int conn
int objoid
string mode
pg_loopen 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.
objoid specifies a valid large object oid
and mode can be either "r", "w", or "rw".
pg_loread
read a large object
Description
string pg_loread
int fd
int len
pg_loread reads at most
len bytes from a large object and
returns it as a string.
fd specifies a valid large object file
descriptor andlen specifies the maximum
allowable size of the large object segment.
pg_loreadall
read a entire large object
Description
void pg_loreadall
int fd
pg_loreadall 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.
pg_lounlink
delete a large object
Description
void pg_lounlink
int conn
int lobjid
pg_lounlink deletes a large object with the
lobjid identifier for that large object.
pg_lowrite
write a large object
Description
int pg_lowrite
int fd
string buf
pg_lowrite writes at most to a large object
from a variable buf and returns the number
of bytes actually written, or false in the case of an error.
fd is a file descriptor for the large
object from pg_loopen.
pg_NumFields
Returns the number of fields
Description
int pg_numfields
int result_id
pg_NumFields() will return the number of fields (columns) in a
PostgreSQL result. The argument is a valid result identifier
returned by pg_Exec. This function will
return -1 on error.
pg_NumRows
Returns the number of rows
Description
int pg_numrows
int result_id
pg_NumRows will return the number of rows in a
PostgreSQL result. The argument is a valid result identifier
returned by pg_Exec. This function will
return -1 on error.
pg_Options
Returns options
Description
string pg_options
int connection_id
pg_Options() will return a string containing the options
specified on the given PostgreSQL connection identifier.
pg_pConnect
make a persistent database connection
Description
int pg_pconnect
string host
string port
string options
string tty
string dbname
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
pg_Connect.
A connection can also established with the following command:
$conn = pg_pconnect("dbname=marliese port=5432");
Other parameters besides dbname and
port are host,
tty and options.
pg_Port
Returns the port number
Description
int pg_port
int connection_id
pg_Port() will return the port number that the given PostgreSQL
connection identifier is connected to.
pg_Result
Returns values from a result identifier
Description
mixed pg_result
int result_id
int row_number
mixed fieldname
pg_Result() will return values from a result identifier produced
by pg_Exec. The
row_number and
fieldname 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.
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
psql program.
pg_tty
Returns the tty name
Description
string pg_tty
int connection_id
pg_tty() will return the tty name that server side debugging
output is sent to on the given PostgreSQL connection identifier.