PostgreSQL ist ein kostenloses Open Source Datenbanksystem. Es wurde ursprünglich im UC Berkeley Computer Science Department entwickelt und hat Pionierarbeit bei objektrelationalen Datenbankkonzepten geleistet, die jetzt Einzug in einige kommerzielle Datenbanken halten. PostgreSQL bietet SQL92/SQL99 Sprachunterstützung, Transaktionen, referentielle Integrität, benutzerdefinierte Funktionen und ein erweiterbares Typkonzept. PostgreSQL ist eine Weiterentwicklung des ursprünglichen Berkeley-Codes.
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 8.0 haben. PostgreSQL unterstützt viele Zeichencodierungen, einschließlich multibyte character encoding. Die aktuelle Version sowie weitere Informationen über PostgreSQL sind auf den Seiten » http://www.postgresql.org/ erhältlich und die ausführliche Dokumentation finden Sie unter » PostgreSQL Documentation.
Um die PostgreSQL-Unterstützung zu aktivieren müssen Sie PHP mit der Option --with-pgsql[=DIR] kompilieren. DIR ist das Basis Installationsverzeichnis von PostgreSQL, normalerweise /usr/local/pgsql. Falls das shared-object-Modul verfügbar ist, kann PostgreSQL mit der extension-Directive in php.ini oder der Funktion dl() geladen werden.
Das Verhalten dieser Funktionen wird durch Einstellungen in der php.ini beeinflusst.
Name | Standard | Änderbar | Changelog |
---|---|---|---|
pgsql.allow_persistent | "1" | PHP_INI_SYSTEM | |
pgsql.max_persistent | "-1" | PHP_INI_SYSTEM | |
pgsql.max_links | "-1" | PHP_INI_SYSTEM | |
pgsql.auto_reset_persistent | "0" | PHP_INI_SYSTEM | Verfügbar seit PHP 4.2.0. |
pgsql.ignore_notice | "0" | PHP_INI_ALL | Verfügbar seit PHP 4.3.0. |
pgsql.log_notice | "0" | PHP_INI_ALL | Verfügbar seit PHP 4.3.0. |
Hier eine kurze Erklärung der Konfigurationsoptionen:
Bestimmt, ob persistente PostgreSQL-Verbindungen zulässig sind.
Legt die maximale Anzahl persistenter PostgreSQL-Verbindungen pro Prozess fest.
Legt Die maximale Anzahl aller PostgreSQL-Verbindungen, einschliesslich der persistenten Verbindungen, pro Prozess fest.
Findet ungültige persistente Verbindungen, die mit der Funktion pg_pconnect() geöffnet wurden. Erfordert ein wenig Mehraufwand.
Bestimmt, ob Notice-Meldungen vom PostgreSQL-Server ignoriert werden sollen.
Bestimmt, ob Notice-Meldungen vom PostgreSQL-Server protokolliert werden sollen. Die PHP-Direktive pgsql.ignore_notice muss deaktiviert sein, um die Meldungen zu protokollieren.
Im PostgreSQL-Modul werden zwei Ressource-Typen verwendet: Der erste ist die Verbindungskennung für Datenbankverbindungen, die zweite Ressource ist die Ergebniskennung, die ein Abfrageergebnis enthält.
Folgende Konstanten werden von dieser Erweiterung definiert und stehen nur zur Verfügung, wenn die Erweiterung entweder statisch in PHP kompiliert oder dynamisch zur Laufzeit geladen wurde.
Hinweis: 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.
Hinweis: Die meisten PostgreSQL Funktionen nehmen den Parameter connection als ersten optionalen Parameter entgegen. Falls er nicht angegeben wurde, wird die zuletzt geöffnete Verbindung benutzt. Wenn keine geöffnete Verbindung existiert, geben diese Funktionen FALSE zurück.
Hinweis: PostgreSQL wandelt automatisch alle Bezeichner in Kleinbuchstaben um (beispielsweise Tabellennamen oder Spaltennamen) und zwar sowohl bei der Erzeugung der Objekte als auch in Abfragen. Um Namen in Gross- und Kleinschreibung oder in Grossbuchstaben zu erzwingen, müssen diese in Anführungszeichen ("") eingeschlossen werden.
Hinweis: PostgreSQL stellt keine speziellen Kommandos zur Verfügung, um Informationen über ein Datenbank-Schema (z. B. alle Tabellen in der aktuellen Datenbank) zu erhalten. Stattdessen gibt es ab der Version 7.4 und höher ein Standard-Schma, das information_schema, in dem alle notwendigen Informationen in System-Views enthalten sind und die einfach abzufragen sind. Ausführliche Informationen darüber gibt es in der » PostgreSQL Documentation.
Dieses einfache Beispiel zeigt den Verbindungsaufbau, die Ausführung einer einfachen Abfrage, die Ausgabe der Abfrageergebnisse und, wie eine Verbindung wieder geschlossen wird.
Example#1 PostgreSQL extension overview example
<?php
// Verbindungsaufbau und Auswahl der Datenbank
$dbconn = pg_connect("host=localhost dbname=publishing user=www password=foo")
or die('Verbindungsaufbau fehlgeschlagen: ' . pg_last_error());
// Eine SQL-Abfrge ausführen
$query = 'SELECT * FROM authors';
$result = pg_query($query) or die('Abfrage fehlgeschlagen: ' . pg_last_error());
// Ergebnisse in HTML ausgeben
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";
// Speicher freigeben
pg_free_result($result);
// Verbindung schliessen
pg_close($dbconn);
?>