PostgreSQL - Interface PHP
Installation
L'extension PostgreSQL est activée par défaut dans les dernières versions de PHP 5.3.x. Il est possible de le désactiver en utilisant--without-pgsqlau moment de la compilation. Vous pouvez toujours utiliser la commande yum pour installer l'interface PHP -PostgreSQL -
yum install php-pgsql
Avant de commencer à utiliser l'interface PHP PostgreSQL, recherchez le pg_hba.conf dans votre répertoire d'installation PostgreSQL et ajoutez la ligne suivante -
# IPv4 local connections:
host all all 127.0.0.1/32 md5
Vous pouvez démarrer / redémarrer le serveur postgres, au cas où il ne serait pas en cours d'exécution, en utilisant la commande suivante -
[root@host]# service postgresql restart
Stopping postgresql service: [ OK ]
Starting postgresql service: [ OK ]
Les utilisateurs Windows doivent activer php_pgsql.dll pour utiliser cette extension. Cette DLL est incluse avec les distributions Windows dans les dernières versions de PHP 5.3.x
Pour des instructions d'installation détaillées, veuillez consulter notre tutoriel PHP et son site officiel.
API d'interface PHP
Voici des routines PHP importantes, qui peuvent suffire à votre besoin pour travailler avec la base de données PostgreSQL à partir de votre programme PHP. Si vous recherchez une application plus sophistiquée, vous pouvez consulter la documentation officielle PHP.
S. Non. | API et description |
---|---|
1 | resource pg_connect ( string $connection_string [, int $connect_type ] ) Cela ouvre une connexion à une base de données PostgreSQL spécifiée par connection_string. Si PGSQL_CONNECT_FORCE_NEW est passé en tant que connect_type, alors une nouvelle connexion est créée en cas d'un deuxième appel à pg_connect (), même si la connection_string est identique à une connexion existante. |
2 | bool pg_connection_reset ( resource $connection ) Cette routine réinitialise la connexion. Il est utile pour la récupération d'erreur. Renvoie TRUE en cas de succès ou FALSE en cas d'échec. |
3 | int pg_connection_status ( resource $connection ) Cette routine renvoie l'état de la connexion spécifiée. Renvoie PGSQL_CONNECTION_OK ou PGSQL_CONNECTION_BAD. |
4 | string pg_dbname ([ resource $connection ] ) Cette routine renvoie le nom de la base de données que la ressource de connexion PostgreSQL donnée. |
5 | resource pg_prepare ([ resource $connection ], string $stmtname, string $query ) Cela soumet une demande de création d'une instruction préparée avec les paramètres donnés et attend la fin. |
6 | resource pg_execute ([ resource $connection ], string $stmtname, array $params ) Cette routine envoie une requête pour exécuter une instruction préparée avec des paramètres donnés et attend le résultat. |
sept | resource pg_query ([ resource $connection ], string $query ) Cette routine exécute la requête sur la connexion à la base de données spécifiée. |
8 | array pg_fetch_row ( resource $result [, int $row ] ) Cette routine extrait une ligne de données à partir du résultat associé à la ressource de résultat spécifiée. |
9 | array pg_fetch_all ( resource $result ) Cette routine renvoie un tableau contenant toutes les lignes (enregistrements) de la ressource de résultat. |
dix | int pg_affected_rows ( resource $result ) Cette routine renvoie le nombre de lignes affectées par les requêtes INSERT, UPDATE et DELETE. |
11 | int pg_num_rows ( resource $result ) Cette routine renvoie le nombre de lignes dans une ressource de résultat PostgreSQL, par exemple le nombre de lignes renvoyées par l'instruction SELECT. |
12 | bool pg_close ([ resource $connection ] ) Cette routine ferme la connexion non persistante à une base de données PostgreSQL associée à la ressource de connexion donnée. |
13 | string pg_last_error ([ resource $connection ] ) Cette routine renvoie le dernier message d'erreur pour une connexion donnée. |
14 | string pg_escape_literal ([ resource $connection ], string $data ) Cette routine échappe un littéral pour l'insertion dans un champ de texte. |
15 | string pg_escape_string ([ resource $connection ], string $data ) Cette routine échappe une chaîne pour interroger la base de données. |
Connexion à la base de données
Le code PHP suivant montre comment se connecter à une base de données existante sur une machine locale et finalement un objet de connexion à la base de données sera renvoyé.
<?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";
}
?>
Maintenant, exécutons le programme donné ci-dessus pour ouvrir notre base de données testdb: si la base de données est ouverte avec succès, elle donnera le message suivant -
Opened database successfully
Créer une table
Le programme PHP suivant sera utilisé pour créer une table dans une base de données précédemment créée -
<?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);
?>
Lorsque le programme ci-dessus est exécuté, il créera la table COMPANY dans votre testdb et il affichera les messages suivants -
Opened database successfully
Table created successfully
Opération INSERT
Le programme PHP suivant montre comment nous pouvons créer des enregistrements dans notre table COMPANY créée dans l'exemple ci-dessus -
<?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);
?>
Lorsque le programme donné ci-dessus est exécuté, il créera les enregistrements donnés dans la table COMPANY et affichera les deux lignes suivantes -
Opened database successfully
Records created successfully
Opération SELECT
Le programme PHP suivant montre comment nous pouvons récupérer et afficher les enregistrements de notre table COMPANY créée dans l'exemple ci-dessus -
<?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);
?>
Lorsque le programme donné ci-dessus est exécuté, il produira le résultat suivant. Notez que les champs sont renvoyés dans l'ordre dans lequel ils ont été utilisés lors de la création de la table.
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
Opération UPDATE
Le code PHP suivant montre comment nous pouvons utiliser l'instruction UPDATE pour mettre à jour n'importe quel enregistrement, puis récupérer et afficher les enregistrements mis à jour à partir de notre table 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);
?>
Lorsque le programme donné ci-dessus est exécuté, il produira le résultat suivant -
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
Opération DELETE
Le code PHP suivant montre comment nous pouvons utiliser l'instruction DELETE pour supprimer n'importe quel enregistrement, puis récupérer et afficher les enregistrements restants de notre table 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);
?>
Lorsque le programme donné ci-dessus est exécuté, il produira le résultat suivant -
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