* Add examples to the 3 remaining functions that didn't have them: pg_convert(), pg_field_prtlen() and pg_set_client_encoding().

* Large rewrite of the PostgreSQL overview page.  Bring it up to date and similar to the MySQL extension overview page.  Remove complexities, clutter and references to truly old versions.


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@195156 c90b9560-bf6c-de11-be94-00142212c4b1
This commit is contained in:
Christopher Kings-Lynne 2005-09-05 04:07:19 +00:00
parent 1a2bfd872a
commit e1ddb8003d
4 changed files with 194 additions and 271 deletions

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.13 $ -->
<!-- $Revision: 1.14 $ -->
<!-- splitted from ./en/functions/pgsql.xml, last change in rev 1.80 -->
<refentry id='function.pg-convert'>
<refnamediv>
@ -88,7 +88,31 @@
An <type>array</type> of converted values, or &false; on error.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>pg_convert</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$dbconn = pg_connect('dbname=foo');
$tmp = array(
'author' => 'Joe Thackery',
'year' => 2005,
'title' => 'My Life, by Joe Thackery'
);
$vals = pg_convert($dbconn, 'authors', $tmp);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.10 $ -->
<!-- $Revision: 1.11 $ -->
<!-- splitted from ./en/functions/pgsql.xml, last change in rev 1.2 -->
<refentry id="function.pg-field-prtlen">
<refnamediv>
@ -75,7 +75,56 @@
The field printed length, or &false; on error.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Getting information about fields</title>
<programlisting role="php">
<![CDATA[
<?php
$dbconn = pg_connect("dbname=publisher") or die("Could not connect");
$res = pg_query($dbconn, "select * from authors where author = 'Orwell'");
$i = pg_num_fields($res);
for ($j = 0; $j < $i; $j++) {
echo "column $j\n";
$fieldname = pg_field_name($res, $j);
echo "fieldname: $fieldname\n";
echo "printed length: " . pg_field_prtlen($res, $fieldname) . " characters\n";
echo "storage length: " . pg_field_size($res, $j) . " bytes\n";
echo "field type: " . pg_field_type($res, $j) . " \n\n";
}
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
column 0
fieldname: author
printed length: 6 characters
storage length: -1 bytes
field type: varchar
column 1
fieldname: year
printed length: 4 characters
storage length: 2 bytes
field type: int2
column 2
fieldname: title
printed length: 24 characters
storage length: -1 bytes
field type: varchar
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.9 $ -->
<!-- $Revision: 1.10 $ -->
<!-- splitted from ./en/functions/pgsql.xml, last change in rev 1.16 -->
<refentry id="function.pg-set-client-encoding">
<refnamediv>
@ -77,7 +77,44 @@
Returns 0 on success or -1 on error.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>pg_set_client_encoding</function> example</title>
<programlisting role="php">
<![CDATA[
<?php
$conn = pg_pconnect("dbname=publisher");
if (!$conn) {
echo "An error occured.\n";
exit;
}
// Set the client encoding to UNICODE. Data will be automatically
// converted from the backend encoding to the frontend.
pg_set_client_encoding($conn, UNICODE);
$result = pg_query($conn, "SELECT author, email FROM authors");
if (!$result) {
echo "An error occured.\n";
exit;
}
// Write out UTF-8 data
while ($row = pg_fetch_row($result)) {
echo "Author: $row[0] E-mail: $row[1]";
echo "<br />\n";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>

View file

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision: 1.26 $ -->
<!-- $Revision: 1.27 $ -->
<!-- Purpose: database.vendors -->
<!-- Membership: bundled, external -->
@ -26,7 +26,7 @@
<para>
To use PostgreSQL support, you need PostgreSQL 6.5 or
later, PostgreSQL 8.0 or later to enable all PostgreSQL module
features. PostgreSQL supports many character encoding including
features. PostgreSQL supports many character encodings including
multibyte character encoding. The current version and more
information about PostgreSQL is available at
<ulink url="&url.pgsql;">&url.pgsql;</ulink> and
@ -38,282 +38,95 @@
&reference.pgsql.ini;
<section id="pgsql.using">
<title>How to use and hints</title>
<warning>
<para>
Using the PostgreSQL module with PHP 4.0.6 is not recommended due to
a bug in the notice message handling code. Use 4.1.0 or later.
</para>
</warning>
<warning>
<para>
PostgreSQL function names will be changed in 4.2.0 release to
confirm to current coding standards. Most of new names will have
additional underscores, e.g. pg_lo_open(). Some functions are
renamed to different name for consistency. e.g. pg_exec() to
pg_query(). Older names can be used in 4.2.0 and a few releases
from 4.2.0, but they may be deleted in the future.
</para>
<table>
<title>Function names changed</title>
<tgroup cols="2">
<thead>
<row>
<entry>Old name</entry>
<entry>New name</entry>
</row>
</thead>
<tbody>
<row>
<entry><function>pg_cmdtuples</function></entry>
<entry><function>pg_affected_rows</function></entry>
</row>
<row>
<entry><function>pg_errormessage</function></entry>
<entry><function>pg_last_error</function></entry>
</row>
<row>
<entry><function>pg_exec</function></entry>
<entry><function>pg_query</function></entry>
</row>
<row>
<entry><function>pg_fieldname</function></entry>
<entry><function>pg_field_name</function></entry>
</row>
<row>
<entry><function>pg_fieldsize</function></entry>
<entry><function>pg_field_size</function></entry>
</row>
<row>
<entry><function>pg_fieldnum</function></entry>
<entry><function>pg_field_num</function></entry>
</row>
<row>
<entry><function>pg_fieldprtlen</function></entry>
<entry><function>pg_field_prtlen</function></entry>
</row>
<row>
<entry><function>pg_fieldisnull</function></entry>
<entry><function>pg_field_is_null</function></entry>
</row>
<row>
<entry><function>pg_freeresult</function></entry>
<entry><function>pg_free_result</function></entry>
</row>
<row>
<entry><function>pg_getlastoid</function></entry>
<entry><function>pg_last_oid</function></entry>
</row>
<row>
<entry><function>pg_loreadall</function></entry>
<entry><function>pg_lo_read_all</function></entry>
</row>
<row>
<entry><function>pg_locreate</function></entry>
<entry><function>pg_lo_create</function></entry>
</row>
<row>
<entry><function>pg_lounlink</function></entry>
<entry><function>pg_lo_unlink</function></entry>
</row>
<row>
<entry><function>pg_loopen</function></entry>
<entry><function>pg_lo_open</function></entry>
</row>
<row>
<entry><function>pg_loclose</function></entry>
<entry><function>pg_lo_close</function></entry>
</row>
<row>
<entry><function>pg_loread</function></entry>
<entry><function>pg_lo_read</function></entry>
</row>
<row>
<entry><function>pg_lowrite</function></entry>
<entry><function>pg_lo_write</function></entry>
</row>
<row>
<entry><function>pg_loimport</function></entry>
<entry><function>pg_lo_import</function></entry>
</row>
<row>
<entry><function>pg_loexport</function></entry>
<entry><function>pg_lo_export</function></entry>
</row>
<row>
<entry><function>pg_numrows</function></entry>
<entry><function>pg_num_rows</function></entry>
</row>
<row>
<entry><function>pg_numfields</function></entry>
<entry><function>pg_num_fields</function></entry>
</row>
<row>
<entry><function>pg_result</function></entry>
<entry><function>pg_fetch_result</function></entry>
</row>
</tbody>
</tgroup>
</table>
<section id="pgsql.resources">
&reftitle.resources;
<para>
The old <function>pg_connect</function>/<function>pg_pconnect</function>
syntax will be deprecated to support asynchronous connections in the
future. Please use a connection string for <function>pg_connect</function>
and <function>pg_pconnect</function>.
There are two resource types used in the PostgreSQL module. The first one
is the link identifier for a database connection, the second a resource
which holds the result of a query.
</para>
</warning>
<para>
Not all functions are supported by all builds. It depends on your
libpq (The PostgreSQL C Client interface) version and how libpq is
compiled. If there is missing function, libpq does not support
the feature required for the function.
</para>
<para>
It is also important that you do not use an older libpq than the PostgreSQL
Server to which you will be connecting. 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 opened 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 its 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 variables affect PostgreSQL server/client
behavior. For example, PostgreSQL module will lookup PGHOST
environment variable when the hostname is omitted in the connection
string. Supported environment variables are different from version
to version. Refer to PostgreSQL Programmer's Manual (libpq -
Environment Variables) for details.
</para>
<para>
Make sure you set environment variables for appropriate user. Use
<literal>$_ENV</literal> or <function>getenv</function> to check
which environment variables are available to the current process.
</para>
<example>
<title>Setting default parameters</title>
<programlisting>
<![CDATA[
PGHOST=pgsql.example.com
PGPORT=7890
PGDATABASE=web-system
PGUSER=web-user
PGPASSWORD=secret
PGDATESTYLE=ISO
PGTZ=JST
PGCLIENTENCODING=EUC-JP
export PGHOST PGPORT PGDATABASE PGUSER PGPASSWORD PGDATESTYLE PGTZ PGCLIENTENCODING
]]>
</programlisting>
</example>
<note>
<para>
PostgreSQL automatically folds all identifiers (e.g. table/column names)
to lower-case values. To get it to recognize upper-case values, you must
always wrap the identifier in quotes.
</para>
</note>
</section>
&reference.pgsql.constants;
<section id="pgsql.notes">
&reftitle.notes;
<note>
<para>
Not all functions are supported by all builds. It depends on your
libpq (The PostgreSQL C client library) version and how libpq is
compiled. If PHP PostgreSQL extensions are missing, then it is because
your libpq version does not support them.
</para>
</note>
<note>
<para>
Most PostgreSQL functions accept <parameter>connection</parameter> as
the first optional parameter. If it is not provided, the last opened
connection is used. If it doesn't exist, functions return &false;.
</para>
</note>
<note>
<para>
PostgreSQL automatically folds all identifiers (e.g. table/column names)
to lower-case values at object creation time and at query time.
To force the use of mixed or upper case identifiers, you must escape
the identifier using double quotes ("").
</para>
</note>
<note>
<para>
PostgreSQL does not have special commands for fetching database schema
information (eg. all the tables in the current database). Instead, there
is a standard schema named <literal>information_schema</literal> in
PostgreSQL 7.4 and above containing
system views with all the necessary information, in an easily
queryable form. See the <ulink url="&url.pgsql.manual;">PostgreSQL Documentation</ulink>
for full details.
</para>
</note>
</section>
<section id="pgsql.examples">
&reftitle.examples;
<para>
Starting with PostgreSQL 7.1.0, you can store up to 1GB into a
field of type text. In older versions, this was limited to the block
size (default was 8KB, maximum was 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">
<para>
This simple example shows how to connect, execute a query, print
resulting rows and disconnect from a PostgreSQL database.
<example>
<title>PostgreSQL extension overview example</title>
<programlisting role="php">
<![CDATA[
<?php
$database = pg_connect("dbname=jacarta");
pg_query($database, "begin");
$oid = pg_lo_create($database);
echo "$oid\n";
$handle = pg_lo_open($database, $oid, "w");
echo "$handle\n";
pg_lo_write($handle, "large object data");
pg_lo_close($handle);
pg_query($database, "commit");
// Connecting, selecting database
$db = pg_connect("host=localhost dbname=publishing user=www password=foo");
or die('Could not connect: ' . pg_last_error());
// Performing SQL query
$query = 'SELECT * FROM authors';
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
// Printing results in HTML
echo "<table>\n";
while ($line = pg_fetch_array($result, null, PGSQL_ASSOC)) {
echo "\t<tr>\n";
foreach ($line as $col_value) {
echo "\t\t<td>$col_value</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
// Free resultset
pg_free_result($result);
// Closing connection
pg_close($link);
?>
]]>
</programlisting>
</example>
You should not close the connection to the PostgreSQL server
before closing the large object.
</para>
</section>
</programlisting>
</example>
</para>
</section>
</partintro>
&reference.pgsql.functions;