LXXI. PostgreSQL

Postgres, initialement développé au département de Science informatique, à UC Berkeley, mis en place la majorité des concepts des bases relationnelles, actuellement disponibles sur le marché. PostgreSQL accepte le langage SQL92/SQL3, assure l'intégrité transactionnelle, et l'extension de type. PostgreSQL est une évolution du code originale de Berkeley : il est Open Source et dans le domaine public.

PostgreSQL est disponible sans frais. La version actuelle est disponible à (en anglais) : www.PostgreSQL.org.

Depuis la version 6.3 (03/02/1998) PostgreSQL utilise les sockets UNIX, et une table est dédiée à ces nouvelles capacités. La socket est située dans le dossier /tmp/.s.PGSQL.5432. Cette option peut être activée avec '-i' passé au postmaster et cela s'interprète: "écoute sur les sockets TCP/IP et sur les sockets Unix".

Tableau 1. Postmaster et PHP

PostmasterPHPStatut
postmaster &pg_connect("dbname=MonDbName");OK
postmaster -i &pg_connect("dbname=MonDbName");OK
postmaster &pg_connect("host=localhost dbname=MonDbName"); Unable to connect to PostgreSQL server: connectDB() failed: Impossible de se connecter au serveur PostgreSQL: connectDB() a échoué. Est ce que le postmaster fonctionne, et accepte les TCP/IP (option -i) sur le port '5432'?
postmaster -i &pg_connect("host=localhost dbname=MonDbName");OK

Il est possible de se connecter avec la commande suivante : $conn = pg_Connect("host=monHote port=monPort tty=monTTY options=myOptions dbname=myDB user=myUser password=myPassword");

L'ancienne syntaxe : $conn = pg_connect("host", "port", "options", "tty", "dbname") est obsolète.

Pour utiliser l'interface des grands objets (large object (lo) interface), il est nécessaire de les placer dans un bloc de transaction. Un bloc de transaction commence avec begin et si la transaction se termine avec un commit et end. Si la transaction échoue, elle doit être conclue par un abort et rollback.

Exemple 1. Utilisation des objets de grande taille (Large Objects)

<?php
  $database = pg_connect("", "", "", "", "jacarta");
  pg_exec($database, "begin");
  $oid = pg_locreate($database);
  echo "$oid\n";
  $handle = pg_loopen($database, $oid, "w");
  echo "$handle\n";
  pg_lowrite($handle, "gaga");
  pg_loclose($handle);
  pg_exec($database, "commit")
  pg_exec($database, "end")
?>

Table des matières
pg_Close -- Termine une connexion PostgreSQL.
pg_cmdTuples -- Retourne le nombre de tuples affectés.
pg_connect -- Ouvre une connexion.
pg_DBname -- Nom de la base de données.
pg_end_copy -- Synchronise avec le serveur PostgreSQL
pg_ErrorMessage -- Message d'erreur.
pg_Exec -- Exécute une requête.
pg_Fetch_Array -- Lit une ligne dans un tableau.
pg_Fetch_Object -- Lit une ligne dans un objet.
pg_Fetch_Row -- Lit une ligne dans un tableau.
pg_FieldIsNull -- Teste si un champs est à NULL.
pg_FieldName -- Retourne le nom d'un champs.
pg_FieldNum -- Retourne le numéro d'une colonne.
pg_FieldPrtLen -- Retourne la taille imprimée.
pg_FieldSize --  Retourne la taille interne de stockage d'un champs donné.
pg_FieldType --  Retourne le type d'un champs donné par index.
pg_FreeResult -- Libère la mémoire
pg_GetLastOid -- Retourne le dernier identifiant d'objet.
pg_Host -- Retourne le nom d'hôte.
pg_loclose -- Ferme un objet de grande taille.
pg_locreate -- Crée un objet de grande taille.
pg_loexport -- Exporte un objet de grande taille vers un fichier
pg_loimport -- Importe un objet de grande taille depuis un fichier
pg_loopen -- Ouvre un objet de grande taille.
pg_loread -- Lit un objet de grande taille.
pg_loreadall -- Lit un objet de grande taille en totalité.
pg_lounlink -- Efface un objet de grande taille
pg_lowrite -- Ecrit un objet de grande taille
pg_NumFields -- Retourne le nombre de champs
pg_NumRows -- Retourne le nombre de lignes.
pg_Options -- Retourne les options.
pg_pConnect --  Etablit une connexion persistante.
pg_Port -- Retourne le numéro de port.
pg_put_line -- Envoie une chaîne au serveur PostgreSQL
pg_Result -- Retourne les valeurs d'un identifiant de résultat.
pg_set_client_encoding --  Choisit l'encodage du client
pg_client_encoding --  Lit l'encodage du client
pg_trace -- Active le suivi d'une connexion PostgreSQL
pg_tty -- Retourne le nom de tty.
pg_untrace -- Termine le suivi d'une connexion PostgreSQL