PHP et base de données
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 Microso? Access DBM IBM Informix...
Accés aux bases de données APIs différentes en foncion des bases Principe similaire pour toutes les bases Connexion au serveur (host + user + password) Choix de la base ExécuIon d une requête Traitement ligne par ligne du résultat Fermeture de la connexion au serveur UnificaIon : PDO (PHP Data Objects) pas dans ce cours
PHP et MySQL Depuis version 5 de PHP, deux extensions pour accéder à base de données MySQL extension mysql obsolète en PHP 5.5.0, suprimée en PHP 7.0.0 extension mysqli (dite mysql améliorée ) accès procédural accès objet pas dans ce cours Très proches en termes de foncionnalités Mêmes foncions avec syntaxes ideniques ou compaibles
PHP-MySQL et phpmyadmin
PHP-MySQL et phpmyadmin
Connexion au serveur MySQL mysqli mysqli_connect(string $host, string $username, string $passwd, string $dbname) $host est une chaîne contenant le nom du serveur $username est le nom sous lequel l uilisateur est autorisé à accéder au serveur $passwd est le mot de passe associé à l uilisateur $dbname spécifie la base de données par défaut à uiliser lors de l exécuion de requêtes
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éraions.
Connexion au serveur MySQL Déconnexion : La connexion établie prend fin automaiquement quand le script PHP est terminé Dès que possible : libèrer le serveur MySQL bool mysqli_close(myqli $conn) $conn est l idenifiant de connexion retourné par la foncion mysqli_connect() ceae foncion retourne TRUE en cas de succès et FALSE si une erreur survient
Connexion au serveur MySQL Choix de la base de données : Base de données par défaut pour une connexion : sélecionnée avec la foncion mysqli_connect() (4ème paramètre) ; choix d une autre base avec bool mysqli_select_db(mysqli $conn, string $dbname) $conn est l idenifiant de connexion retourné par la foncion mysqli_connect() $dbname conient le nom de la base de données ceae foncion retourne TRUE si la base $dbname existe et FALSE dans le cas contraire
Envoi de requêtes SQL au serveur Pour envoyer une requête : mixed mysqli_query(mysqli $conn, string $query) $conn est l idenifiant de connexion retourné par la foncion mysqli_connect() la chaîne $query conient le code de la requête SQL ceae foncion retourne FALSE en cas d echec. Pour des requêtes de type SELECT, SHOW, DESCRIBE ou EXPLAIN réussies, elle retournera un objet (de type mysqli_result). Pour les autres types de requêtes (UPDATE, DELETE,...) ayant réussies, elle retournera TRUE.
Envoi de requêtes SQL au serveur Il est recommandé d effectuer un test pour vérifier la bonne réalisaion de chaque requête SQL dans un script
Lecture du résultat d une requête Le résultat de l execuion d une requête SELECT peut être lu par la foncion mysqli_fetch_array() mixed mysqli_fetch_array(mysqli_result $result, int $typetab) $result est l idenifiant de jeu de résultats retourné par la foncion mysqli_query() ceae foncion retourne un tableau contenant autant d éléments qu il y a de colonnes précisées dans la requête SELECT
Lecture du résultat d une requête $typetab est une constante enière précisant si le tableau retourné doit être associaif (valeur MYSQLI_ASSOC), indicé (valeur MYSQLI_NUM) ou les deux à la fois (valeur MYSQLI_BOTH, qui est la valeur par défaut) Si le tableau est associaif, les clés du tableau sont les noms des colonnes de la table interrogée 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
Lecture du résultat d une requête chaque nouvel appel de mysqli_fetch_array() retourne la ligne suivante du résultat indenifié par $result, ou FALSE s il n y a plus de ligne à lire parcours du résultat en uilisant des boucles
Lecture du résultat d une requête Les deux autres foncions suivantes permeaent de récupérer une ligne de résultat à la fois dans un tableau mixed mysqli_fetch_assoc(mysqli_result $result), qui retourne un tableau uniquement associaif dont les clés sont les noms des colonnes de la table interrogée mixed mysqli_fetch_row(mysqli_result $result), qui retourne un tableau uniquement indicé dont les indices sont les numéros des colonnes de la table interrogée mysqli_fetch_assoc($result) se comporte comme mysqli_fetch_array($result, MYSQLI_ASSOC) mysqli_fetch_row($result) se comporte comme mysqli_fetch_array($result, MYSQLI_NUM)