COURS N°6

publicité
COURS N°6
PHP et bases de données
2
Plan
1.
Introduction à la programmation web
2.
La structuration des pages web avec le langage HTML
3.
Le style et le positionnement avec le langage CSS
4.
La communication client serveur avec le protocole HTTP
5.
Introduction au langage PHP
6.
PHP et les bases de données
7.
Introduction au langage JavaScript
8.
Le JavaScript avancé
3
Plan du cours
1. Accès aux bases de données
2. PHP et MySQL
3. phpMyAdmin
4. Connexion au serveur MySQL
5. Déconnexion du serveur MySQL
6. Choix de la base de données
7. Envoi de requêtes SQL
8. Lecture du résultat d’une requêtes SQL
4
Accès aux bases de données
•Une des raisons du succès de PHP
•Support d’un grand nombre de bases
• MySQL
• Oracle
• PostgreSQL
• SQLite
• Microsoft Access
• DBM
• IBM Informix
• ...
5
Accès aux bases de données
• Il existe des APIs différentes en fonction des bases de
données
• Principe similaire pour toutes les bases
1. Connexion au serveur (host + user + password)
2. Choix de la base
3. Exécution d’une requête
4. Traitement ligne par ligne du résultat
5. Fermeture de la connexion au serveur
• Unification : PDO (PHP Data Objects)
6
PHP et MySQL
• Depuis la version 5 de PHP, deux extensions pour accéder à
la base de données MySQL
• extension mysql
• extension mysqli (dite “mysql améliorée”)
• accès procédural
• accès objet
• Très proches en termes de fonctionnalités
• Mêmes fonctions avec syntaxes identiques ou compatibles
7
PHP – MySQL et phpMyAdmin
• phpMyAdmin : Un outil logiciel libre écrit en PHP, destiné à
l'administration de MySQL à travers une interface WEB.
8
Connexion au serveur MySQL
• Avec la fonction PHP :
mysqli_connect(string $host, string $username, string $passwd, string $dbname)
o $host est une chaîne contenant le nom du serveur
o $username est le nom sous lequel l’utilisateur est autorisé
à accéder au serveur
o $passwd est le mot de passe associé à l’utilisateur
o $dbname spécifie la base de données par défaut à utiliser
lors de l’exécution de requêtes
9
Connexion au serveur MySQL
• mysqli_connect() retourne un objet (de type mysqli) qui
représente la connexion au serveur MySQL. Si la connexion
n’est pas établie, elle retourne FALSE.
• Il faut donc toujours tester la réussite de la connexion avant
d’effectuer d’autres opérations.
10
Déconnexion du serveur MySQL
• La connexion établie prend fin automatiquement quand le
script PHP est terminé
Bonnes pratiques
Dès que possible : libérer le serveur MySQL
• bool mysqli_close(myqli $conn)
• $conn est l’identifiant de connexion retourné par la fonction
mysqli_connect()
• mysqli_close() retourne TRUE en cas de succès et FALSE
si une erreur survient
11
Choix de la base de données
• Possibilité de choisir la base de données par défaut lors de
la connexion: Avec $dbname (4ème paramètre)
dans la
fonction mysqli_connect();
• Possibilité de choisir la base de données avec la fonction
bool mysqli_select_db(mysqli $conn, string $dbname)
• $conn est l’identifiant de connexion retourné par la fonction
mysqli_connect()
• $dbname contient le nom de la base de données
• mysqli_select_db() retourne TRUE si la base $dbname
existe et FALSE sinon
12
Envoi de requêtes SQL
• mysqli_query(mysqli $conn, string $query)
•
$conn est l’identifiant de connexion retourné par la fonction
mysqli_connect()
•
$query est une chaine de caractères contenant le code de la requête
SQL
• La fonction mysqli_query() retourne :
•
FALSE en cas d’echec.
•
Un objet de type mysqli_result Pour des requêtes de type SELECT,
SHOW, DESCRIBE ou EXPLAIN réussies
•
TRUE pour les autres types de requêtes (UPDATE, DELETE, ...)
ayant réussies.
13
Envoi de requêtes SQL
• Il est recommandé d’effectuer un test pour vérifier la bonne
réalisation de chaque requête SQL dans un script
14
Lecture du resultat d’une requêtes SQL
• Le résultat de l’execution d’une requête SELECT peut être lu
par la fonction mysqli_fetch_array()
• mysqli_fetch_array(mysqli_result $result, int $typetab)
• $result est l’identifiant du jeu de résultats retourné par
la fonction mysqli_query()
• mysqli_fetch_array() retourne une ligne de résultat
sous
la
forme
d’un
tableau
contenant
autant
d’éléments qu’il y a de colonnes précisées dans la
requête SELECT
15
Lecture du resulatat d’une requêtes SQL
• $typetab est une constante entière précisant si le tableau
retourné doit être :
• Associatif avec la valeur MYSQLI_ASSOC : Si le tableau
est associatif, les clés du tableau sont les noms des
colonnes de la table interrogée
• Indicé avec la valeur MYSQLI_NUM : Si le tableau est
indicé, l’indice d’un élément est celui de la colonne dans
la requête, la première colonne ayant l’indice 0
• Les deux à la fois avec la valeur MYSQLI_BOTH : qui est
la valeur par défaut
16
Lecture du résultat d’une requêtes SQL
• Chaque nouvel appel de mysqli_fetch_array() retourne la
ligne suivante du résultat identifié par $result, ou FALSE s’il
n’y a plus de ligne à lire.
• Exemples des différentes lectures :
$query = "SELECT Name, CountryCode FROM City ORDER by ID LIMIT 3";
$result = mysqli_query($link, $query);
/* Tableau numérique */
$row = mysqli_fetch_array($result, MYSQLI_NUM);
printf ("%s (%s)\n", $row[0], $row[1]);
/* Tableau associatif */
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
printf ("%s (%s)\n", $row["Name"], $row["CountryCode"]);
/* Tableau associatif et numérique */
$row = mysqli_fetch_array($result, MYSQLI_BOTH);
printf ("%s (%s)\n", $row[0], $row["CountryCode"]);
17
Lecture du résultat d’une requêtes SQL
• parcours du résultat en utilisant des boucles
18
Lecture du résultat d’une requêtes SQL
• Les deux autres fonctions suivantes permettent de récupérer
une ligne de résultat à la fois dans un tableau
• mysqli_fetch_assoc(mysqli_result $result) se comporte
comme mysqli_fetch_array($result, MYSQLI_ASSOC)
• mysqli_fetch_row(mysqli_result
$result)
se
comporte
comme mysqli_fetch_array($result, MYSQLI_NUM)
Téléchargement