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.
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.
Wird an die Funktion pg_fetch_array() übergeben. Gibt ein Array zurück, das sowohl assoziativ (mit den Feldnamen) als auch numerisch (mit den Feldnummern) indiziert ist, und den entsprechenden Werten.
Wird an die Funktion pg_connect() übergeben, um
eine neue Verbindung zu erzwingen, anstatt eine identische,
bereits geöffnete Verbindung wieder zu benutzen.
Wird von der Funktion pg_result_status()
zurückgegeben. Ein Kommando wurde erfolgreich ausgeführt und es
wurden Daten (wie etwa ein SELECT oder
SHOW) zurückgegeben.
Wird von der Funktion pg_transaction_status()
zurückgegeben. Die Verbindung wird momentan benutzt. Es wird eine
Abfrage ausgeführt, die noch nicht beendet ist.
Wird von der Funktion pg_transaction_status()
zurückgegeben. Die Verbindung wurde von einer abgebrochenen
Transaktion benutzt und ist momentan nicht aktiv.
Wird an die Funktion pg_result_error_field()
übergeben.
Gibt den Schweregrad des Fehlers zurück. Die Feldinhalte sind ERROR,
FATAL oder PANIC
(in einer Fehlermeldung) oder WARNING,
NOTICE, DEBUG,
INFO oder LOG
(in einer Notice-Meldung) oder eine lokalisierte Übersetzung davon.
Dieses Feld ist immer verfügbar.
Wird an die Funktion pg_result_error_field()
übergeben. Gibt den SQLSTATE-Code des Fehlers zurück. Der
SQLSTATE-Code identifiziert den Typ des aufgetretenen Fehlers.
Dieser kann von Anwendungen ausgewertet werden, um entsprechende
Operationen auszuführen (beispielsweise Fehlerbehandlungsroutinen),
als Reaktion auf einen bestimmten Datenbankfehler. dieses Feld kann
nicht lokalisiert werden und ist immer verfügbar.
Wird an die Funktion pg_result_error_field()
übergeben. Dies ist die primäre, für Menschen lesbare Fehlermeldung
(normalerweise in einer Zeile) und ist immer verfügbar.
Wird an die Funktion pg_result_error_field()
übergeben. Detail: eine optionale untergeordnete Fehlermeldung, in
der das Problem genauer beschrieben wird. Diese Meldung kann
mehrere Zeilen lang sein.
Wird an die Funktion pg_result_error_field()
übergeben. Hint: ein optionaler Hinweis, wie mit dem Problem
umzugehen ist. Dies wurde eingeführt, um (möglicherweise
unpassende) Lösungen zur Verfügung zu stellen, anstatt harte
Fakten, wie bei Details. Diese Meldung kann mehrere Zeilen lang
sein.
Wird an die Funktion pg_result_error_field()
übergeben. Dies ist ein String, der eine dezimale Integerzahl
enthält, die die Cursorposition des originalen SQL-Strings angibt,
an der ein Fehler auftrat. Das erste Zeichen hat die Position 1 und
zur Bestimmung der Positionen werden Zeichen zugrundegelegt und
nicht Bytes.
Wird an die Funktion pg_result_error_field()
übergeben. Per Definition ist das dasselbe wie das Feld
PG_DIAG_STATEMENT_POSITION, es wird aber
benutzt, wenn die Cursorposition auf ein intern generiertes
Kommando verweist und nicht auf eines, das vom Benutzer eingegeben
wurde. Das Feld PG_DIAG_INTERNAL_QUERY wird
immer gesetzt, wenn dieses Feld gesetzt ist.
Wird an die Funktion pg_result_error_field()
übergeben. Dies ist der Text eines fehlgeschlagenen, intern
generierten Kommandos. Das kann beispielsweise eine SQL-Abfrage
sein, die von einer PL/pgSQL-Funktion gesendet wurde.
Wird an die Funktion pg_result_error_field()
übergeben. Dies gibt einen Hinweis auf den Kontext, in dem ein
Fehler auftrat. Gegenwärtig sind Zurückverfolgungen des
Aufrufstacks von Funktionen aktivierter prozeduraler Sprachen darin
enthalten, sowie intern generierte Abfragen. Die Ablaufverfolgung
enthält einen Eintrag pro Zeile, die neuesten Einträge zuerst.
Wird an die Funktion pg_set_error_verbosity()
übergeben. Damit wird festgelegt, dass Fehlermeldungen die Felder
severity, primary text und position enthalten. Normalerweise passt
das alles in eine Zeile.
Wird an die Funktion pg_set_error_verbosity()
übergeben. Die Standardeinstellung gibt Meldungen mit den oben
beschriebenen Inhalten zurück, zuzüglich aller Details, Hinweise
und Kontext-Informationen. (Dies kann mehrere Zeilen umfassen.)
Anmerkung:
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.
Anmerkung:
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.
Anmerkung:
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.
Anmerkung:
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.
Beispiel 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); ?>
Inhaltsverzeichnis
pg_affected_rows -- Gibt die Anzahl betroffener Datensätze (Tupel) zurück
pg_port --
Gibt die Portnummer zurück, über die die Verbindung aufgebaut wurde
pg_prepare --
Sendet eine Aufforderung an den Server, eine vorbereitete Anfrage mit den
übergebenen Parametern zu erzeugen und wartet auf ihre Beendigung.
pg_put_line -- Sendet eine NULL-terminierte Zeichenkette zum PostgreSQL-Server
pg_query_params -- Sendet ein Kommando zum Server und wartet seine Ausführung
ab. Getrennt vom SQL-Kommando können dabei Parameter übergeben werden.
pg_send_execute --
Sendet eine Aufforderung an den Server, eine vorbereitete Abfrage mit den
übergebenen Parametern auszuführen, ohne auf die Ergebnisse zu warten.
pg_send_prepare --
Sendet eine Aufforderung an den Server, eine vorbereitete Abfrage mit den
übergebenen Parametern zu erzeugen, ohne auf ihre Beendigung zu warten.
pg_send_query_params -- Sendet ein Kommando und separate Parameter zum Server,
ohne auf die Rückgabe der Ergebnisse zu warten.
Dieses Tutorial beschreibt sehr gut die Wirkunsweise von objektorientiertes Programmieren. Also bestens geeignet um das objektorientierte Programmieren zu verstehen.
In mehreren Tutorials wird der Zugriff auf Facebook Daten mittels Graph API, FQL und REST API erklärt. Alle Codebeispiele liegen zum Ausprobieren in einem SVN, bzw. github Repository bereit.