PostgreSQL - Interfaccia PHP
Installazione
L'estensione PostgreSQL è abilitata per impostazione predefinita nelle ultime versioni di PHP 5.3.x. È possibile disabilitarlo utilizzando--without-pgsqlin fase di compilazione. È ancora possibile utilizzare il comando yum per installare PHP -PostgreSQL interfaccia -
yum install php-pgsql
Prima di iniziare a utilizzare l'interfaccia PHP PostgreSQL, trova il file pg_hba.conf file nella directory di installazione di PostgreSQL e aggiungi la seguente riga:
# IPv4 local connections:
host all all 127.0.0.1/32 md5
È possibile avviare / riavviare il server postgres, nel caso in cui non sia in esecuzione, utilizzando il seguente comando:
[root@host]# service postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]
Gli utenti Windows devono abilitare php_pgsql.dll per utilizzare questa estensione. Questa DLL è inclusa nelle distribuzioni Windows nelle ultime versioni di PHP 5.3.x
Per istruzioni dettagliate sull'installazione, controlla il nostro tutorial PHP e il suo sito web ufficiale.
API dell'interfaccia PHP
Le seguenti sono routine PHP importanti, che possono essere sufficienti per lavorare con il database PostgreSQL dal programma PHP. Se stai cercando un'applicazione più sofisticata, puoi consultare la documentazione ufficiale di PHP.
S. No. | API e descrizione |
---|---|
1 | resource pg_connect ( string $connection_string [, int $connect_type ] ) Questo apre una connessione a un database PostgreSQL specificato da connection_string. Se PGSQL_CONNECT_FORCE_NEW viene passato come connect_type, viene creata una nuova connessione in caso di una seconda chiamata a pg_connect (), anche se connection_string è identica a una connessione esistente. |
2 | bool pg_connection_reset ( resource $connection ) Questa routine ripristina la connessione. È utile per il ripristino degli errori. Restituisce TRUE in caso di successo o FALSE in caso di fallimento. |
3 | int pg_connection_status ( resource $connection ) Questa routine restituisce lo stato della connessione specificata. Restituisce PGSQL_CONNECTION_OK o PGSQL_CONNECTION_BAD. |
4 | string pg_dbname ([ resource $connection ] ) Questa routine restituisce il nome del database che la data risorsa di connessione PostgreSQL. |
5 | resource pg_prepare ([ resource $connection ], string $stmtname, string $query ) Questo invia una richiesta per creare un'istruzione preparata con i parametri forniti e attende il completamento. |
6 | resource pg_execute ([ resource $connection ], string $stmtname, array $params ) Questa routine invia una richiesta per eseguire un'istruzione preparata con determinati parametri e attende il risultato. |
7 | resource pg_query ([ resource $connection ], string $query ) Questa routine esegue la query sulla connessione al database specificata. |
8 | array pg_fetch_row ( resource $result [, int $row ] ) Questa routine recupera una riga di dati dal risultato associato alla risorsa risultato specificata. |
9 | array pg_fetch_all ( resource $result ) Questa routine restituisce una matrice che contiene tutte le righe (record) nella risorsa risultato. |
10 | int pg_affected_rows ( resource $result ) Questa routine restituisce il numero di righe interessate dalle query INSERT, UPDATE e DELETE. |
11 | int pg_num_rows ( resource $result ) Questa routine restituisce il numero di righe in una risorsa risultato PostgreSQL, ad esempio il numero di righe restituite dall'istruzione SELECT. |
12 | bool pg_close ([ resource $connection ] ) Questa routine chiude la connessione non persistente a un database PostgreSQL associato alla risorsa di connessione data. |
13 | string pg_last_error ([ resource $connection ] ) Questa routine restituisce l'ultimo messaggio di errore per una determinata connessione. |
14 | string pg_escape_literal ([ resource $connection ], string $data ) Questa routine evita un valore letterale per l'inserimento in un campo di testo. |
15 | string pg_escape_string ([ resource $connection ], string $data ) Questa routine esegue l'escape di una stringa per interrogare il database. |
Connessione al database
Il seguente codice PHP mostra come connettersi a un database esistente su una macchina locale e infine verrà restituito un oggetto di connessione al database.
<?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";
}
?>
Ora, eseguiamo il programma sopra indicato per aprire il nostro database testdb: se il database è stato aperto con successo, allora darà il seguente messaggio -
Opened database successfully
Crea una tabella
Il seguente programma PHP verrà utilizzato per creare una tabella in un database creato in precedenza:
<?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);
?>
Quando il programma sopra indicato viene eseguito, creerà la tabella COMPANY nel tuo file testdb e mostrerà i seguenti messaggi -
Opened database successfully
Table created successfully
Operazione INSERT
Il seguente programma PHP mostra come possiamo creare record nella nostra tabella AZIENDA creata nell'esempio sopra:
<?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);
?>
Quando il programma sopra indicato viene eseguito, creerà i record dati nella tabella AZIENDA e visualizzerà le seguenti due righe:
Opened database successfully
Records created successfully
Operazione SELECT
Il seguente programma PHP mostra come possiamo recuperare e visualizzare i record dalla nostra tabella AZIENDA creata nell'esempio precedente:
<?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);
?>
Quando il programma sopra indicato viene eseguito, produrrà il seguente risultato. Tieni presente che i campi vengono restituiti nella sequenza in cui sono stati utilizzati durante la creazione della tabella.
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
Operazione UPDATE
Il seguente codice PHP mostra come possiamo utilizzare l'istruzione UPDATE per aggiornare qualsiasi record e quindi recuperare e visualizzare i record aggiornati dalla nostra tabella COMPANY -
<?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);
?>
Quando il programma sopra indicato viene eseguito, produrrà il seguente risultato:
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
Operazione DELETE
Il seguente codice PHP mostra come possiamo utilizzare l'istruzione DELETE per eliminare qualsiasi record e quindi recuperare e visualizzare i record rimanenti dalla nostra tabella COMPANY -
<?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);
?>
Quando il programma sopra indicato viene eseguito, produrrà il seguente risultato:
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