LXXXI. 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_affected_rows -- Retourne le nombre de lignes affectées
pg_cancel_query -- Annule une requête asynchrone
pg_client_encoding --  Lit l'encodage du client
pg_Close -- Termine une connexion PostgreSQL.
pg_connect -- Ouvre une connexion.
pg_connection_busy -- Vérifie si la connexion est occupée
pg_connection_reset -- Reconnecte au serveur PostGresSQL
pg_connection_status -- Lit le statut de la connexion
pg_convert -- Convertit un tableau associatif en une commande SQL
pg_copy_from --  Insère des lignes dans une table à partir d'un tableau
pg_copy_to -- Copie une table dans un tableau
pg_DBname -- Nom de la base de données.
pg_delete -- Efface des lignes
pg_end_copy -- Synchronise avec le serveur PostgreSQL
pg_escape_bytea -- Protège le caractères d'une chaîne binaire en mode bytea
pg_escape_string -- Protège une chaîne de caractères
pg_fetch_all -- Lit toutes les lignes d'un résultat
pg_Fetch_Array -- Lit une ligne dans un tableau.
pg_fetch_assoc -- Lit une ligne sous forme de tableau
pg_Fetch_Object -- Lit une ligne dans un objet.
pg_fetch_result -- Retourne les valeurs d'un résultat
pg_Fetch_Row -- Lit une ligne dans un tableau.
pg_field_is_null -- Teste si un champs est à NULL.
pg_field_Name -- Retourne le nom d'un champs.
pg_field_Num -- Retourne le numéro d'une colonne.
pg_field_PrtLen -- Retourne la taille imprimée.
pg_field_Size --  Retourne la taille interne de stockage d'un champs donné.
pg_field_Type -- Retourne le type d'un champs donné par index.
pg_Free_Result -- Libère la mémoire
pg_get_notify -- Lit le message de NOTIFY
pg_get_pid -- Lit l'identifiant de processus du serveur
pg_get_result -- Lit un résultat asynchrone
pg_Host -- Retourne le nom d'hôte.
pg_insert -- Insère un tableau dans une table
pg_last_error -- Lit le dernier message d'erreur sur la connexion
pg_last_notice --  Retourne la dernière note du serveur PostgreSQL.
pg_last_oid -- Retourne l'identifiant du dernier objet
pg_lo_close -- Ferme un objet de grande taille.
pg_lo_create -- Crée un objet de grande taille.
pg_lo_export -- Exporte un objet de grande taille vers un fichier
pg_lo_import -- Importe un objet de grande taille depuis un fichier
pg_lo_open -- Ouvre un objet de grande taille.
pg_lo_read_all -- Lit un objet de grande taille en totalité.
pg_lo_read -- Lit un objet de grande taille.
pg_lo_seek --  Modifie la position dans un objet de grande taille
pg_lo_tell -- Retourne la position courante dans un objet de grande taille
pg_lo_unlink -- Efface un objet de grande taille
pg_lo_write -- Ecrit un objet de grande taille
pg_meta_data -- Lit les données méta de la table
pg_Num_Fields -- Retourne le nombre de champs
pg_num_rows -- Retourne le nombre de lignes
pg_Options -- Retourne les options.
pg_pConnect --  Etablit une connexion persistante.
pg_ping -- Pingue la connexion à la base
pg_Port -- Retourne le numéro de port.
pg_put_line -- Envoie une chaîne au serveur PostgreSQL
pg_query -- Exécute une requête
pg_result_error -- Lit le message d'erreur associé à un résultat
pg_result_seek -- Modifie la ligne courant dans un résultat
pg_result_status -- Lit le statut du résultat
pg_select -- Effectue une selection
pg_send_query -- Exécute une requête asynchrone
pg_set_client_encoding --  Choisit l'encodage du client
pg_trace -- Active le suivi d'une connexion PostgreSQL
pg_tty -- Retourne le nom de tty.
pg_unescape_bytea -- Supprime le protection d'une chaîne de type bytea
pg_untrace -- Termine le suivi d'une connexion PostgreSQL
pg_update -- Modifie les lignes d'une table