mirror of
https://github.com/php/doc-de.git
synced 2026-03-25 15:52:10 +01:00
git-svn-id: https://svn.php.net/repository/phpdoc/de/trunk@78306 c90b9560-bf6c-de11-be94-00142212c4b1
264 lines
9.2 KiB
XML
264 lines
9.2 KiB
XML
<?xml version='1.0'?>
|
|
<!-- $Revision: 1.2 $ -->
|
|
<reference id='ref.pgsql'>
|
|
<title>PostgreSQL Funktionen</title>
|
|
<titleabbrev>PostgreSQL</titleabbrev>
|
|
|
|
<partintro>
|
|
<warning>
|
|
<para>
|
|
Wegen eines Bugs in der Behandlung von NOTICE-Benachrichtigungen
|
|
sollte das PostgreSQL-Modul der PHP Version 4.0.6 nicht
|
|
benutzt werden.
|
|
</para>
|
|
</warning>
|
|
<warning>
|
|
<para>
|
|
Die Namen der PostgreSQL-Funktionen werden sich ab der PHP Version
|
|
4.2.0 ändern, um sie an die gültigen Coding-Standards anzupassen.
|
|
Die meisten neuen Namen enthalten zusätzliche Unterstriche, z.B.
|
|
pg_lo_open(). Einige Funktionen werden der Einheitlichkeit wegen
|
|
umbenannt, z.B. pg_exec() zu pg_query(). Die älteren Namen können
|
|
in der Version 4.2.0 und auch noch ein paar Releases danach noch
|
|
verwendet werden, aber sie werden irgendwann gelöscht. Die
|
|
CVS-Version benutzt die neuen Funktionsnamen.
|
|
</para>
|
|
<example>
|
|
<title>Die geänderten Funktionsnamen</title>
|
|
<programlisting role='php'>
|
|
<![CDATA[
|
|
ALTER NAME NEUER NAME
|
|
pg_exec pg_query
|
|
pg_getlastoid pg_last_oid
|
|
pg_cmdtuples pg_affected_rows
|
|
pg_errormessage pg_last_error
|
|
pg_numrows pg_num_rows
|
|
pg_numfields pg_num_fields
|
|
pg_fieldname pg_field_name
|
|
pg_fieldsize pg_field_size
|
|
pg_fieldtype pg_field_type
|
|
pg_fieldnum pg_field_num
|
|
pg_fieldprtlen pg_field_prtlen
|
|
pg_fieldisnull pg_field_is_null
|
|
pg_freeresult pg_free_result
|
|
pg_result pg_fetch_result
|
|
pg_loreadall pg_lo_read_all
|
|
pg_locreate pg_lo_create
|
|
pg_lounlink pg_lo_unlink
|
|
pg_loopen pg_lo_open
|
|
pg_loclose pg_lo_close
|
|
pg_loread pg_lo_read
|
|
pg_lowrite pg_lo_write
|
|
pg_loimport pg_lo_import
|
|
pg_loexport pg_lo_export
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
<para>
|
|
Die veraltete Syntax von pg_connect()/pg_pconnect wird ungültig
|
|
werden, um zukünftig asynchrone Verbindungen zu unterstützen.
|
|
Bitte benutzen Sie einen Verbindungsstring mit pg_connect() und
|
|
pg_pconnect().
|
|
</para>
|
|
</warning>
|
|
<para>
|
|
PostgreSQL, ursprünglich entwickelt im UC Berkeley Computer Science
|
|
Department, hat Pionierarbeit bei objektrelationalen
|
|
Datenbankkonzepten geleistet, die jetzt Einzug in kommerzielle
|
|
Datenbanken halten. PostgreSQL bietet SQL92/SQL99
|
|
Sprachunterstützung, Transaktionen und ein erweiterbares
|
|
Typkonzept. PostgreSQL ist eine Public Domain und Open Source
|
|
Weiterentwicklung des ursprünglichen Berkeley-Codes.
|
|
</para>
|
|
<para>
|
|
PostgreSQL ist ein Open Source Produkt und kostenlos
|
|
erhältlich. Um PostgreSQL benutzen zu können, brauchen Sie
|
|
mindestens eine Version 6.5 oder später, um alle Leistungsmerkmale
|
|
des PostgreSQL-Moduls nutzen zu können, müssen Sie eine Version ab
|
|
7.0 haben. PostgreSQL unterstützt viele Zeichencodierungen,
|
|
einschliessllich multibyte character encoding. Die aktuelle Version
|
|
sowie weitere Informationen über PostgreSQL sind auf der Seite
|
|
<ulink url='&url.pgsql;'>www.postgresql.org</ulink> erhältlich.
|
|
</para>
|
|
<para>
|
|
Um die PostgreSQL-Unterstützung nutzen zu können, müssen Sie
|
|
PHP mit "--with-pgsql[=DIR]" kompilieren. Falls das
|
|
shared object module verfügbar ist, kann das PostgreSQL Modul
|
|
mit der <link linkend='ini.extension'>extension</link> Direktive
|
|
der Datei &php.ini; geladen werden oder mittels der Funktion
|
|
<function>dl</function>. Die unterstützten ini Direktiven sind in
|
|
der Datei <filename>php.ini-dist</filename> beschrieben, die mit
|
|
der Distribution ausgeliefert wird.
|
|
</para>
|
|
<para>
|
|
Nicht alle Funktionen sind in allen Versionen verfügbar. Es hängt
|
|
davon ab, welche libpq Version (das PostgreSQL C Client Interface)
|
|
auf Ihrem Rechner verfügbar ist und wie libpq kompiliert wurde.
|
|
Falls eine Funktion nicht verfügbar ist, liegt es daran, dass libpq
|
|
die nötigen Routinen nicht unterstützt, die die Funktion braucht.
|
|
</para>
|
|
<para>
|
|
Es ist ausserdem wichtig, dass Ihre libpq neuer ist, als der
|
|
PostgreSQL Server, zu dem Sie eine Verbindung aufbauen. Wenn Sie
|
|
eine libpq benutzen, die älter als vom PostgreSQL Server erwartet,
|
|
werden Sie wahrscheinlich Probleme haben.
|
|
</para>
|
|
<para>
|
|
Seit Version 6.3 (03/02/1998) benutzt PostgreSQL per Voreinstellung
|
|
Unix Domain Sockets. Ein TCP/IP Port wird NICHT standardmässig
|
|
geöffnet. In der untenstehenden Tabelle werden diese neuen
|
|
Verbindungsmöglichkeiten gezeigt. Der Socket ist in
|
|
<filename>/tmp/.s.PGSQL.5432</filename> zu finden. Der Schalter
|
|
-i, der dem <command>postmaster</command> mitgegeben werden kann,
|
|
weist diesen an, sowohl über TCP/IP als auch über UNIX Domain
|
|
Sockets eine Verbindung aufzubauen.
|
|
<table>
|
|
<title>Postmaster und 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=MyDbName");</entry>
|
|
<entry>OK</entry>
|
|
</row>
|
|
<row>
|
|
<entry>postmaster -i &</entry>
|
|
<entry>pg_connect("dbname=MyDbName");</entry>
|
|
<entry>OK</entry>
|
|
</row>
|
|
<row>
|
|
<entry>postmaster &</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
|
|
/pfad/zu/datei.php on line 20.
|
|
</entry>
|
|
</row>
|
|
<row>
|
|
<entry>postmaster -i &</entry>
|
|
<entry>pg_connect("host=localhost dbname=MyDbName");</entry>
|
|
<entry>OK</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</table>
|
|
</para>
|
|
<para>
|
|
Eine Verbindung zu einem PostgreSQL Server lässt sich auch mit den
|
|
folgenden Wertepaaren, die im Verbindungsstring gesetzt werden,
|
|
herstellen (wobei mindestens der Name der Datenbank
|
|
angegeben sein muss): <command>$conn =
|
|
pg_connect("host=myHost port=myPort tty=myTTY options=myOptions
|
|
dbname=myDB user=myUser password=myPassword ");
|
|
</command>
|
|
</para>
|
|
<para>
|
|
Die bisherige Syntax
|
|
<command>
|
|
$conn = pg_connect ("host", "port", "options", "tty", "dbname")
|
|
</command>
|
|
ist veraltet und sollte nicht weiter verwendet werden.
|
|
</para>
|
|
<para>
|
|
Umgebungsvariablen beeinflussen das Server/Client-Verhalten von
|
|
PostgreSQL. Zum Beispiel sucht das PostgreSQL-Modul nach der
|
|
Umgebungsvariablen PGHOST, falls der Hostname im Verbindungsstring
|
|
nicht angegeben wurde. Die unterstützten Umgebungsvariablen
|
|
variieren von Version zu Version. Schauen Sie für weitere
|
|
Informationen in den PostgreSQL Programmer's Guide (nach den libpq
|
|
Umgebungsvariablen).
|
|
</para>
|
|
<para>
|
|
Versichen Sie sich, dass Sie die Umgebungsvariable für den
|
|
aktuellen Benutzer gesetzt haben. Um sich die Umgebungsvariablen,
|
|
die für den aktuellen Prozess verfügbar sind, anzeigen zu lassen,
|
|
benutzen Sie <literal>$_ENV</literal> oder
|
|
<function>getenv</function>.
|
|
</para>
|
|
<example>
|
|
<title>Umgebungsvariablen setzen</title>
|
|
<programlisting role='php'>
|
|
<![CDATA[
|
|
PGHOST=psgql.exmaple.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>
|
|
<para>
|
|
Ab der PostgreSQL Version 7.1.0 ist die maximale Grösse eines Feldes
|
|
mit dem Datentyp text 1GB. Ältere PostgreSQL Versionen begrenzten
|
|
Felder vom Typ text auf Blockgrösse (normalerweise 8KB bis maximal
|
|
32 KB, falls dies bei der Kompilation angegeben wurde).
|
|
</para>
|
|
<para>
|
|
Um die Large Object-Schnittstelle (lo) zu benutzen, ist es nötig,
|
|
die Large-Object-Funktionen in einen Transaktionsblock einzuschliessen.
|
|
Ein Transaktionsblock beginnt mit einem SQL-Befehl
|
|
<command>begin</command> und endet, falls die Transaktion gültig
|
|
war, mit <command>commit</command> oder <command>end</command>.
|
|
Wenn die Transaktion fehlschlägt, sollte sie mit
|
|
<command>abort</command> oder <command>rollback</command>
|
|
geschlossen werden.
|
|
<example>
|
|
<title>Large Objects benutzen</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, "Daten des Large Objects");
|
|
pg_lo_close ($handle);
|
|
pg_query ($database, "commit");
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
Schliessen Sie zuerst das Large Object, bevor Sie die Verbindung
|
|
schliessen.
|
|
</para>
|
|
</partintro>
|
|
|
|
&reference.pgsql.functions;
|
|
|
|
</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
|
|
--> |