PostgreSQL et PHP Accès à la base de données • Open Source • Disponible sans frais • Il faut : – un serveur : ‘host=?’ – une base de donnée stockée sur le serveur : ‘dbname=?’ – Un login : ‘user=?’ – Un mot de passe : ‘password=?’ • Une méthode de connexion : pg_connect • Sortie : un identifiant de connexion • Entrée : une chaîne des quatre informations séparées par une espace • Récupération de la dernière erreur : die() et pg_last_error() Interrogation avec PHP • Une méthode de requête SQL : pg_query() – entrée : requête SQL sous forme de chaîne de caractère – Sortie : un pointeur vers la ressource contenant les tuples appelés par la requête (n tuples de m champs) • Une méthode de parcours des résultats : pg_fetch_array() – Entrée : • une sortie de pg_query() • Un numéro de ligne entre 0 et n-1(peut être omis en passant ‘null’ à la place) • Une constante qui définit le type de la variable de stockage d’un tuple (indices numériques, associatifs ou les deux) – Sortie : un tableau numérique et/ou associatif • Numérique (PGSQL_NUM) : valeurs des champs du tuple indicées de 0 à m-1 • Associatif (PGSQL_ASSOC) : valeurs des champs du tuple indicées par le nom du champs • Les deux (PGSQL_BOTH) Fin de requête en PHP • Libération du résultat: pg_free_result(pointeur vers la ressource contenant les tuples) • Fermeture de la base : pg_close(identifiant de connexion) • Exemple de connexion et d’affichage de la valeur des champs d’une base de données postgreSQL diapo suivante Affichage d’un tableau XHTML contenant les champs des tuples résultats d’une requête SQL <?php // connexion $connexion= pg_connect("host=monServeur dbname=maBase user=moi password=toto") or die('Connexion impossible : ' . pg_last_error()); // interrogation $requete= 'SELECT * FROM maTable'; $resultat= pg_query(r$equete) or die('Échec requête : ' . pg_last_error()); // Parcours et affichage des résultats en XHTML echo "<table>\n"; while ($tuple= pg_fetch_array($resultat, null, PGSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($tuple as $champs => $valeur_champs) { echo "\t<td>$champs : $valeur_champs</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // libération de la mémoire (optionnel car automatique en fin de script) pg_free_result($resultat); // fermeture de la connexion (optionnel car automatique en fin de script) pg_close($connexion); ?>