1
PHP - BD
S. Lanquetin
LE2I
Aile sciences de l'ingénieur
Bureau G206
PostgreSQL
S. Lanquetin - L3 : Introduction Technologie pour le Web
3
Présentation
PostgreSQL s'appuie sur le modèle
relationnel mais apporte les extensions
suivantes :
–  les classes,
–  l'héritage,
–  les types de données utilisateurs (tableaux,
structures, listes..),
–  les fonctions,
Site http://postgresql.org/
S. Lanquetin - L3 : Introduction Technologie pour le Web
4
Connexion (I)
!  pg_connect(…) : renvoie true si la connexion est établie
!  pg_pconnect (…) : connexion persistante (ne se referme pas
automatiquement en fin de script).
!  pg_dbname(…) : retourne le nom de la base de données
!  pg_close(…) : permet de fermer la connexion
!  On peut intégrer ce code dans un fichier que l’on pourra joindre
par include . (Sécuriser le mot de passe de connexion).
$id_connexion = pg_connect("dbname=nom_base host=nom_serveur
port=num_port user=nom_utilisateur password=mot_passe");
pg_close($id_connexion);
$nom_base = pg_dbname ($id_connexion);
S. Lanquetin - L3 : Introduction Technologie pour le Web
5
Connexion (II)
! 
Exemple 1 :
<?php
if( $id =pg_connect("dbname=nom_base host=nom_serveur
port=num_port user=nom_utilisateur password=mot_passe")) {
if(pg_dbname($id ) == "nom_base" ) {
echo "Succès de connexion.";
/* code du script … */
} else {
exit("Echec de connexion à la base.");
}
pg_close($id);
} else {
exit("Echec de connexion au serveur de base de données.");
}
?>
S. Lanquetin - L3 : Introduction Technologie pour le Web
6
Requête
! pg_query(..) pour envoyer une requête à une base de données
retourne un identifiant de résultat ou FALSE si échec.
Les requêtes les plus couramment utilisées :
– CREATE (création d’une table),
– SELECT (sélection),
– INSERT (insertion),
– UPDATE (mise à jour des données),
– DELETE (suppression),
– ALTER (modification d’une table), etc.
$id_resultat = pg_query($id_connexion, $requete);
$result= pg_query ($id_connexion, "SELECT adresse FROM users
WHERE name = pg_escape_string($name) ");
2
S. Lanquetin - L3 : Introduction Technologie pour le Web
7
Extraction des données (I)
!  Affichage des résultats ligne par ligne.
SQL > SELECT * FROM etudiants;
ID NOM OPTION
----------------------------
1 arthur image 1ère ligne
2 clement multimedia 2ème ligne
3 vincent image pour multimedia 3è ligne
! plusieurs valeurs=>tableau, tableau associatif, ou objet.
S. Lanquetin - L3 : Introduction Technologie pour le Web
8
Extraction des données (II)
pg_fetch_row($result) : retourne une ligne de résultat sous la
forme d’un tableau. Les éléments du tableau étant les valeurs des
attributs de la ligne. Retourne FALSE s’il n’y a plus aucune ligne.
Exemple :
Ici, on accède aux valeurs de la ligne par leur indice dans le tableau.
$requet = "SELECT * FROM etudiants";
if($result = pg_query($requet)) {
while($ligne = pg_fetch_row($result)) {
$id = $ligne[0];
$nom = $ligne[1];
$option = $ligne[2];
echo "$id - $nom, $option <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
9
Extraction des données (III)
pg_fetch_array($result) : retourne tableau et tableau associatif.
Exemple :
Ici, on accède aux valeurs de la ligne par l’attribut dans le tableau
associatif.
$requet = "SELECT * FROM etudiants";
if($result = pg_query($requet)) {
while($ligne = pg_fetch_array($result)) {
$id = $ligne['id'];//$id = $ligne[0];
$nom = $ligne['nom'];
$option = $ligne['option'];
echo "$id - $nom, $option <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
10
Extraction des données (III)
pg_fetch_assoc($result) : retourne un tableau associatif. Les clés
étant les noms des attributs et leurs valeurs associées leurs valeurs
respectives. Retourne FALSE s’il n’y a plus aucune ligne.
Exemple :
Ici, on accède aux valeurs de la ligne par l’attribut dans le tableau
associatif.
$requet = "SELECT * FROM etudiants";
if($result = pg_query($requet)) {
while($ligne = pg_fetch_assoc($result)) {
$id = $ligne['id'];
$nom = $ligne['nom'];
$option = $ligne['option'];
echo "$id - $nom, $option <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
11
Extraction des données (IV)
pg_fetch_object($result) : retourne un objet. Les attributs de
l’objet correspondent à ceux de la ligne de résultat. Et les valeurs
des attributs de l’objet correspondent à ceux de la ligne de
résultat. Retourne FALSE s’il n’y a plus aucune ligne.
Exemple 3 :
Ici, on accède aux valeurs par leur attribut dans l’objet.
$requet = "SELECT * FROM etudiants";
if($result = pg_query($requet)) {
while($ligne = pg_fetch_object($result)) {
$id = $ligne->id;
$nom = $ligne->nom;
$option = $ligne->option;
echo "$id - $name, $address <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
12
Fonctions additionnelles
Quelques fonctions supplémentaires très utiles :
! pg_free_result($result) : efface de la mémoire du serveur les
lignes de résultat de la requête identifiées par $ result.
! pg_num_fields($result) : retourne le nombre d’attributs
dans un résultat.
! pg_num_rows($result) : retourne le nombre
d'enregistrement dans un résultat.
! Penser à bien tester la valeur de retour des fonctions
(pg_query et les autres) afin de détecter toute erreur
3
S. Lanquetin - L3 : Introduction Technologie pour le Web
13
Fonctions additionnelles
! $nom_hote = pg_host($id_connexion) : retourne le
nom de l'hôte pour la connexion spécifiée
! $option_connexion = pg_options($id_connexion) :
retourne les options d'une connexion SQL
!  $num_port = pg_port($id_connexion) : retourne le
numéro de port pour la connexion indiquée
!  pg_set_client_encoding($id_connexion, $encodage) :
détermine l'encodage du client (SQL_ASCII, UNICODE,…)
! $encodage = pg_client_encoding($id_connexion) :
retourne l'encodage du client;
MySQL
S. Lanquetin - L3 : Introduction Technologie pour le Web
15
Présentation
! MySQL : base de données implémentant le langage
de requête SQL.
! phpMyAdmin : outil pour administrer aisément les
bases de données MySQL avec php.
http://www.phpmyadmin.net.
! Avec MySQL vous pouvez créer plusieurs bases de
données sur un serveur. Une base est composée de
tables contenant des enregistrements.
http://www.mysql.com/.
! Documentation MySQL :
– http://www.mysql.com/documentation/
– En français chez nexen : http://dev.nexen.net/
docs/mysql/.
S. Lanquetin - L3 : Introduction Technologie pour le Web
16
Connexion (I)
!  mysql_connect(…) : connection au serveur $server
retourne l’identifiant de connexion si succès, FALSE sinon
!  mysql_pconnect (…) : connexion persistante (ne se referme
pas automatiquement en fin de script).
! mysql_select_db(…) : choix de la base $base,
retourne TRUE en cas de succès, sinon FALSE
! mysql_close (…) : permet de fermer la connexion
! intégration de ce code avec include. (Sécuriser le mot de passe de
connexion).
$id_connexion = mysql_connect($server,$user,$password)
mysql_close($id_connexion);
if(mysql_select_db($base[,$idconnexion]) )
S. Lanquetin - L3 : Introduction Technologie pour le Web
17
Connexion (II)
! 
Exemple 1 :
<?php
if( $id =mysql_connect("nom_serveur","nom_utilisateur","mot_passe")) {
if($id_db=mysql_select_db($base,$id) ) {
echo "Succès de connexion.";
/* code du script … */
} else {
exit("Echec de connexion à la base.");
}
mysql_close($id);
} else {
exit("Echec de connexion au serveur de base de données.");
}
?>
S. Lanquetin - L3 : Introduction Technologie pour le Web
18
Requête
! mysql_query(..) pour envoyer une requête à une base de données
retourne un identifiant de résultat ou FALSE si échec.
Les requêtes les plus couramment utilisées :
– CREATE (création d’une table),
– SELECT (sélection),
– INSERT (insertion),
– UPDATE (mise à jour des données),
– DELETE (suppression),
– ALTER (modification d’une table), etc.
! Attention, contrairement à Oracle SQL, les requêtes MySQL ne se terminent
pas par un point virgule ‘;’
$id_resultat = mysql_query($requete);
$result = mysql_query(‘SELECT adresse FROM users WHERE name =\’ ’.
mysql_real_escape_string($name) .’\’ ’);
4
S. Lanquetin - L3 : Introduction Technologie pour le Web
19
Extraction des données (I)
!  Affichage des résultats ligne par ligne.
SQL > SELECT * FROM etudiants;
ID NOM OPTION
----------------------------
1 arthur image 1ère ligne
2 clement multimedia 2ème ligne
3 vincent image pour multimedia 3ème ligne
! plusieurs valeurs=>tableau, tableau associatif, ou objet.
S. Lanquetin - L3 : Introduction Technologie pour le Web
20
Extraction des données (II)
mysql_fetch_row($result) : retourne une ligne de résultat sous la
forme d’un tableau. Les éléments du tableau étant les valeurs des
attributs de la ligne. Retourne FALSE s’il n’y a plus aucune ligne.
Exemple :
Ici, on accède aux valeurs de la ligne par leur indice dans le tableau.
$requet = "SELECT * FROM etudiants";
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_row($result)) {
$id = $ligne[0];
$nom = $ligne[1];
$option = $ligne[2];
echo "$id - $nom, $option <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
21
Extraction des données (III)
mysql_fetch_array($result) : retourne tableau et tableau associatif.
Exemple :
Ici, on accède aux valeurs de la ligne par l’attribut dans le tableau
associatif.
$requet = "SELECT * FROM etudiants";
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_array($result)) {
$id = $ligne["id"];
$nom = $ligne["nom"];
$option = $ligne["option"];
echo "$id - $nom, $option <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
22
Extraction des données (III)
mysql_fetch_assoc($result) : retourne un tableau associatif. Les
clés étant les noms des attributs et leurs valeurs associées leurs valeurs
respectives. Retourne FALSE s’il n’y a plus aucune ligne.
Exemple :
Ici, on accède aux valeurs de la ligne par l’attribut dans le tableau
associatif.
$requet = "SELECT * FROM etudiants";
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_assoc($result)) {
$id = $ligne["id"];
$nom = $ligne["nom"];
$option = $ligne["option"];
echo "$id - $nom, $option <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
23
Extraction des données (IV)
mysql_fetch_object($result) : retourne un objet. Les attributs
de l’objet correspondent à ceux de la ligne de résultat. Et les
valeurs des attributs de l’objet correspondent à ceux de la ligne
de résultat. Retourne FALSE s’il n’y a plus aucune ligne.
Exemple 3 :
Ici, on accède aux valeurs par leur attribut dans l’objet.
$requet = "SELECT * FROM etudiants";
if($result = mysql_query($requet)) {
while($ligne = mysql_fetch_object($result)) {
$id = $ligne->id;
$nom = $ligne->nom;
$option = $ligne->option;
echo "$id - $name, $address <br />";
}
} else {
echo "Erreur de requête de base de données.";
}
S. Lanquetin - L3 : Introduction Technologie pour le Web
24
Fonctions additionnelles
Quelques fonctions supplémentaires très utiles :
! mysql_free_result($result) : efface de la mémoire du
serveur les lignes de résultat de la requête identifiées par
$requet. Très utile pour améliorer les performances du serveur.
! mysql_insert_id([$id]) : retourne l’identifiant d’un attribut
clé primaire AUTO_INCREMENT de la dernière insertion.
! mysql_num_fields($result) : retourne le nombre d’attributs
du résultats.
! mysql_num_rows($result) : retourne le nombre de lignes du
résultats. Et ainsi permet de remplacer le while par un for.
Penser à bien tester la valeur de retour des fonctions
(mysql_query et les autres) afin de détecter toute erreur et
d’éviter les
Warnings
.
5
PDO
25
Qu'est ce que PDO
! PHP Data Objects
! Interface d'abstraction à l'accès de données
! Écrit en C
! Fournit avec php 5.1 extension pour php 5.0
! Ne fonctionne pas avec les versions antérieures!
S. Lanquetin - L3 : Introduction Technologie pour le Web
26
Les BD supportées
! MySQL 3,4,5
! PostgreSQL
! SQLite 2 & 3
! ODBC
! DB2
! Oracle
! Firebird
! FreeTDS/Sybase/MSSQL
S. Lanquetin - L3 : Introduction Technologie pour le Web
27
Installation
! Activer PDO
– php.ini : extension=php_pdo.dll
! Activer le driver PDO de la base de données
choisie
– extension=php_pdo_mysql.dll
– extension=php_pdo_pgsql.dll
S. Lanquetin - L3 : Introduction Technologie pour le Web
28
Afficher drivers PDO disponibles
! Lancer ce script pour connaître les drivers
disponibles
S. Lanquetin - L3 : Introduction Technologie pour le Web
29
<?php
foreach( get_loaded_extensions () as $extension) {
if(strpos(strtolower($extension), 'pdo') !==
FALSE) {
echo $extension.'<br/>';
}
}
?>
Connexion
! Création d'une instance de la classe de base de
PDO
– Connexion MySQL
S. Lanquetin - L3 : Introduction Technologie pour le Web
30
<?php
// connexion => création d’une instance
$bd =
new PDO('mysql:host=localhost;dbname=test', $user, $pass);
…
// déconnexion
$bd = null;
?>
1 / 10 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans l'interface ou les textes ? Ou savez-vous comment améliorer l'interface utilisateur de StudyLib ? N'hésitez pas à envoyer vos suggestions. C'est très important pour nous!