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