PostgreSQL - PHP-Schnittstelle

Installation

Die PostgreSQL-Erweiterung ist in den neuesten Versionen von PHP 5.3.x standardmäßig aktiviert. Es ist möglich, es mit zu deaktivieren--without-pgsqlzur Kompilierungszeit. Trotzdem können Sie den Befehl yum verwenden, um die PHP-PostgreSQL-Schnittstelle zu installieren.

yum install php-pgsql

Bevor Sie die PHP PostgreSQL-Schnittstelle verwenden, suchen Sie die pg_hba.conf Datei in Ihrem PostgreSQL-Installationsverzeichnis und fügen Sie die folgende Zeile hinzu:

# IPv4 local connections:
host    all         all         127.0.0.1/32          md5

Sie können den Postgres-Server mit dem folgenden Befehl starten / neu starten, falls er nicht ausgeführt wird:

[root@host]# service postgresql restart
Stopping postgresql service:                               [  OK  ]
Starting postgresql service:                               [  OK  ]

Windows-Benutzer müssen php_pgsql.dll aktivieren, um diese Erweiterung verwenden zu können. Diese DLL ist in Windows-Distributionen in den neuesten Versionen von PHP 5.3.x enthalten

Detaillierte Anweisungen zur Installation finden Sie in unserem PHP-Tutorial und auf der offiziellen Website.

PHP-Schnittstellen-APIs

Das Folgende sind wichtige PHP-Routinen, die ausreichen können, um mit der PostgreSQL-Datenbank Ihres PHP-Programms zu arbeiten. Wenn Sie nach einer anspruchsvolleren Anwendung suchen, können Sie in der offiziellen PHP-Dokumentation nachsehen.

S. Nr. API & Beschreibung
1

resource pg_connect ( string $connection_string [, int $connect_type ] )

Dadurch wird eine Verbindung zu einer PostgreSQL-Datenbank hergestellt, die durch den Verbindungsstring angegeben wird.

Wenn PGSQL_CONNECT_FORCE_NEW als connect_type übergeben wird, wird bei einem zweiten Aufruf von pg_connect () eine neue Verbindung erstellt, auch wenn der connection_string mit einer vorhandenen Verbindung identisch ist.

2

bool pg_connection_reset ( resource $connection )

Diese Routine setzt die Verbindung zurück. Es ist nützlich für die Fehlerbehebung. Gibt bei Erfolg TRUE oder bei Misserfolg FALSE zurück.

3

int pg_connection_status ( resource $connection )

Diese Routine gibt den Status der angegebenen Verbindung zurück. Gibt PGSQL_CONNECTION_OK oder PGSQL_CONNECTION_BAD zurück.

4

string pg_dbname ([ resource $connection ] )

Diese Routine gibt den Namen der Datenbank zurück, die die angegebene PostgreSQL-Verbindungsressource enthält.

5

resource pg_prepare ([ resource $connection ], string $stmtname, string $query )

Dies sendet eine Anfrage zum Erstellen einer vorbereiteten Anweisung mit den angegebenen Parametern und wartet auf den Abschluss.

6

resource pg_execute ([ resource $connection ], string $stmtname, array $params )

Diese Routine sendet eine Anforderung zum Ausführen einer vorbereiteten Anweisung mit angegebenen Parametern und wartet auf das Ergebnis.

7

resource pg_query ([ resource $connection ], string $query )

Diese Routine führt die Abfrage für die angegebene Datenbankverbindung aus.

8

array pg_fetch_row ( resource $result [, int $row ] )

Diese Routine ruft eine Datenzeile aus dem Ergebnis ab, das der angegebenen Ergebnisressource zugeordnet ist.

9

array pg_fetch_all ( resource $result )

Diese Routine gibt ein Array zurück, das alle Zeilen (Datensätze) in der Ergebnisressource enthält.

10

int pg_affected_rows ( resource $result )

Diese Routine gibt die Anzahl der Zeilen zurück, die von INSERT-, UPDATE- und DELETE-Abfragen betroffen sind.

11

int pg_num_rows ( resource $result )

Diese Routine gibt die Anzahl der Zeilen in einer PostgreSQL-Ergebnisressource zurück, z. B. die Anzahl der von der SELECT-Anweisung zurückgegebenen Zeilen.

12

bool pg_close ([ resource $connection ] )

Diese Routine schließt die nicht persistente Verbindung zu einer PostgreSQL-Datenbank, die der angegebenen Verbindungsressource zugeordnet ist.

13

string pg_last_error ([ resource $connection ] )

Diese Routine gibt die letzte Fehlermeldung für eine bestimmte Verbindung zurück.

14

string pg_escape_literal ([ resource $connection ], string $data )

Diese Routine entgeht einem Literal zum Einfügen in ein Textfeld.

15

string pg_escape_string ([ resource $connection ], string $data )

Diese Routine entgeht einer Zeichenfolge zum Abfragen der Datenbank.

Verbindung zur Datenbank herstellen

Der folgende PHP-Code zeigt, wie eine Verbindung zu einer vorhandenen Datenbank auf einem lokalen Computer hergestellt wird. Schließlich wird ein Datenbankverbindungsobjekt zurückgegeben.

<?php
   $host        = "host = 127.0.0.1";
   $port        = "port = 5432";
   $dbname      = "dbname = testdb";
   $credentials = "user = postgres password=pass123";

   $db = pg_connect( "$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }
?>

Lassen Sie uns nun das oben angegebene Programm ausführen, um unsere Datenbank zu öffnen testdb: Wenn die Datenbank erfolgreich geöffnet wurde, wird die folgende Meldung angezeigt:

Opened database successfully

Erstellen Sie eine Tabelle

Das folgende PHP-Programm wird verwendet, um eine Tabelle in einer zuvor erstellten Datenbank zu erstellen -

<?php
   $host        = "host = 127.0.0.1";
   $port        = "port = 5432";
   $dbname      = "dbname = testdb";
   $credentials = "user = postgres password=pass123";

   $db = pg_connect( "$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }
   
   $sql =<<<EOF
      CREATE TABLE COMPANY
      (ID INT PRIMARY KEY     NOT NULL,
      NAME           TEXT    NOT NULL,
      AGE            INT     NOT NULL,
      ADDRESS        CHAR(50),
      SALARY         REAL);
EOF;

   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
   } else {
      echo "Table created successfully\n";
   }
   pg_close($db);
?>

Wenn das oben angegebene Programm ausgeführt wird, wird eine COMPANY-Tabelle in Ihrem erstellt testdb und es werden die folgenden Meldungen angezeigt -

Opened database successfully
Table created successfully

INSERT-Betrieb

Das folgende PHP-Programm zeigt, wie wir Datensätze in unserer im obigen Beispiel erstellten COMPANY-Tabelle erstellen können -

<?php
   $host        = "host=127.0.0.1";
   $port        = "port=5432";
   $dbname      = "dbname = testdb";
   $credentials = "user = postgres password=pass123";

   $db = pg_connect( "$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (1, 'Paul', 32, 'California', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (2, 'Allen', 25, 'Texas', 15000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (3, 'Teddy', 23, 'Norway', 20000.00 );

      INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY)
      VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00 );
EOF;

   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
   } else {
      echo "Records created successfully\n";
   }
   pg_close($db);
?>

Wenn das oben angegebene Programm ausgeführt wird, werden die angegebenen Datensätze in der COMPANY-Tabelle erstellt und die folgenden zwei Zeilen angezeigt:

Opened database successfully
Records created successfully

SELECT-Betrieb

Das folgende PHP-Programm zeigt, wie wir Datensätze aus unserer im obigen Beispiel erstellten COMPANY-Tabelle abrufen und anzeigen können -

<?php
   $host        = "host = 127.0.0.1";
   $port        = "port = 5432";
   $dbname      = "dbname = testdb";
   $credentials = "user = postgres password=pass123";

   $db = pg_connect( "$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }

   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;

   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } 
   while($row = pg_fetch_row($ret)) {
      echo "ID = ". $row[0] . "\n";
      echo "NAME = ". $row[1] ."\n";
      echo "ADDRESS = ". $row[2] ."\n";
      echo "SALARY =  ".$row[4] ."\n\n";
   }
   echo "Operation done successfully\n";
   pg_close($db);
?>

Wenn das oben angegebene Programm ausgeführt wird, wird das folgende Ergebnis erzeugt. Beachten Sie, dass Felder in der Reihenfolge zurückgegeben werden, in der sie beim Erstellen der Tabelle verwendet wurden.

Opened database successfully
ID = 1
NAME = Paul
ADDRESS = California
SALARY =  20000

ID = 2
NAME = Allen
ADDRESS = Texas
SALARY =  15000

ID = 3
NAME = Teddy
ADDRESS = Norway
SALARY =  20000

ID = 4
NAME = Mark
ADDRESS = Rich-Mond
SALARY =  65000

Operation done successfully

UPDATE-Betrieb

Der folgende PHP-Code zeigt, wie wir mit der UPDATE-Anweisung jeden Datensatz aktualisieren und dann aktualisierte Datensätze aus unserer COMPANY-Tabelle abrufen und anzeigen können.

<?php
   $host        = "host=127.0.0.1";
   $port        = "port=5432";
   $dbname      = "dbname = testdb";
   $credentials = "user = postgres password=pass123";

   $db = pg_connect( "$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<<EOF
      UPDATE COMPANY set SALARY = 25000.00 where ID=1;
EOF;
   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } else {
      echo "Record updated successfully\n";
   }
   
   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;

   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } 
   while($row = pg_fetch_row($ret)) {
      echo "ID = ". $row[0] . "\n";
      echo "NAME = ". $row[1] ."\n";
      echo "ADDRESS = ". $row[2] ."\n";
      echo "SALARY =  ".$row[4] ."\n\n";
   }
   echo "Operation done successfully\n";
   pg_close($db);
?>

Wenn das oben angegebene Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

Opened database successfully
Record updated successfully
ID = 2
NAME = Allen
ADDRESS = 25
SALARY =  15000

ID = 3
NAME = Teddy
ADDRESS = 23
SALARY =  20000

ID = 4
NAME = Mark
ADDRESS = 25
SALARY =  65000

ID = 1
NAME = Paul
ADDRESS = 32
SALARY =  25000

Operation done successfully

DELETE-Betrieb

Der folgende PHP-Code zeigt, wie wir mit der DELETE-Anweisung jeden Datensatz löschen und dann die verbleibenden Datensätze aus unserer COMPANY-Tabelle abrufen und anzeigen können.

<?php
   $host        = "host = 127.0.0.1";
   $port        = "port = 5432";
   $dbname      = "dbname = testdb";
   $credentials = "user = postgres password=pass123";

   $db = pg_connect( "$host $port $dbname $credentials"  );
   if(!$db) {
      echo "Error : Unable to open database\n";
   } else {
      echo "Opened database successfully\n";
   }
   $sql =<<<EOF
      DELETE from COMPANY where ID=2;
EOF;
   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } else {
      echo "Record deleted successfully\n";
   }
   
   $sql =<<<EOF
      SELECT * from COMPANY;
EOF;

   $ret = pg_query($db, $sql);
   if(!$ret) {
      echo pg_last_error($db);
      exit;
   } 
   while($row = pg_fetch_row($ret)) {
      echo "ID = ". $row[0] . "\n";
      echo "NAME = ". $row[1] ."\n";
      echo "ADDRESS = ". $row[2] ."\n";
      echo "SALARY =  ".$row[4] ."\n\n";
   }
   echo "Operation done successfully\n";
   pg_close($db);
?>

Wenn das oben angegebene Programm ausgeführt wird, wird das folgende Ergebnis erzeugt:

Opened database successfully
Record deleted successfully
ID = 3
NAME = Teddy
ADDRESS = 23
SALARY =  20000

ID = 4
NAME = Mark
ADDRESS = 25
SALARY =  65000

ID = 1
NAME = Paul
ADDRESS = 32
SALARY =  25000

Operation done successfully