PHP MySQL N 2 IUT MMI Saint Raphaël 2014-2015
Base de données : Utilisation avec PHP
Se connecter à la base de données PHP propose plusieurs moyens de se connecter à une base de données MySQL : - L'extension mysql_ : ce sont des fonctions qui permettent d'accéder à une base de données MySQL et donc de communiquer avec MySQL. - L'extension mysqli_ : ce sont des fonctions améliorées d'accès à MySQL. Elles proposent plus de fonctionnalités et sont plus à jour.
L'extension PDO (PHP Data Objects) : C'est un outil complet qui permet d'accéder à n'importe quel type de base de données. On peut donc l'utiliser pour se connecter aussi bien à MySQL que PostgreSQL ou Oracle.
Comparatif des 3 extensions Extension mysqli PDO (PHP Data Objects) Extension MySQL Version d introduction en PHP 5.0 5.0 Avant 3.0 Inclus en PHP 5.x Oui Oui Oui Statut de développement MySQL Recommandée pour les nouveaux projets MySQL L API supporte les jeux de caractères L API supporte les commandes préparées L API supporte les commandes préparées coté client L API supporte les procédures stockées L API supporte les commandes multiples Toutes toutes les fonctionnalités MySQL 4.1 et plus récent Développement actif Développement actif depuis PHP 5.3 Maintenance uniquement Oui, et préférée Oui Non Oui Oui Non Oui Oui Non Non Oui Non Oui Oui Non Oui La plupart Non Oui La plupart Non
Normalement, PDO est activé par défaut. Pour le vérifier, faites un clic gauche sur l'icône de WAMP dans la barre des tâches, puis allez dans le menu PHP / Extensions PHP et vérifiez que php_pdo_mysql est bien coché.
L utilisation de la BD avec PHP se fait en 5 étapes : - Connexion - Sélection de la BD - Requête - Exploitation des résultats - Fermeture de la connexion
Structure des classes de PDO : PDO propose 3 classes : - PDO lien à la BD - PDOStatement : requêtes et leurs résultats -PDOException : pour la gestion des erreurs
Se connecter à MySQL avec PDO Nous allons avoir besoin de 4 renseignements : Le nom de l'hôte : c'est l'adresse de l'ordinateur où MySQL est installé. Le plus souvent, MySQL est installé sur le même ordinateur que PHP : dans ce cas, mettez la valeur localhost.
Se connecter à MySQL avec PDO La base : c'est le nom de la base de données à laquelle vous voulez vous connecter. Le login : il permet de vous identifier. Renseignez-vous auprès de votre hébergeur pour le connaître. Le mot de passe : Renseignez-vous auprès de votre hébergeur.
Se connecter à MySQL avec PDO Voici donc comment on doit faire pour se connecter à MySQL via PDO sur la base test : <?php $bdd = new PDO('mysql:host=localhost; dbname=test, 'root', '');?>
Se connecter à MySQL avec PDO Lorsque votre site sera en ligne, vous aurez sûrement un nom d'hôte différent ainsi qu'un login et un mot de passe comme ceci : <?php $bdd = new PDO('mysql:host=sql.hebergeur.com; dbname=mabase', 'pierre.durand', 's3cr3t');?>
Tester la présence d'erreurs <?php try { $pdo_options[pdo::attr_errmode] = PDO::ERRMODE_EXCEPTION; $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options); } catch (Exception $e) { die('erreur : '. $e->getmessage()); }?>
Récupérer des données : Pour récupérer des informations de la base de données, nous avons besoin de notre objet qui représente la connexion à la base : $bdd. <?php $reponse = $bdd->query('tapez votre requête SQL ici');?> On demande ainsi à effectuer une requête sur la base de données. "query" en anglais signifie "requête".
Effectuons la requête : <?php $reponse = $bdd->query('select * FROM jeux_video');?> $reponse contient maintenant la réponse de MySQL Le problème, c'est que $reponse contient quelque chose d'inexploitable. MySQL nous renvoie beaucoup d'informations et il faut les organiser.
Pour récupérer une entrée, on prend la réponse de MySQL et on y exécute fetch(), ce qui nous renvoie la première ligne. $donnees = $reponse->fetch(); $donnees est un tableau (array) qui contient champ par champ les valeurs de la première entrée. Par exemple, si vous vous intéressez au champ console, vous utiliserez l'array : $donnees['console']. Il faudra faire une boucle pour parcourir chaque entrée une à une. A chaque fois que vous appellerez $reponse->fetch(), vous passez à l'entrée suivante.
A la fin de la requette, il faut ajouter : $reponse->closecursor(); Vous devez effectuer cet appel à closecursor() à chaque fois que vous avez fini de traiter le retour d'une requête afin d'éviter d'avoir des problèmes à la requête suivante. Cela signifie qu'on a terminé le travail sur la requête.
Exécuter une requête sans retour : Qu'est-ce que j'appelle une requête sans retour? C'est une requête qui ne retourne pas de données. Par exemple, les requêtes qui suppriment, modifient ou insèrent des données. Les requêtes qui retournent des données sont celles qui commencent par "SELECT...".
Exécuter une requête sans retour : Pour ce type de requête, il faut utiliser la méthode exec(), qui retourne le nombre de ligne affectées. <?php // Connexion à la base de données require 'sqlconnect.php'; $sql = 'DELETE FROM accouns WHERE type = "member"'; $nb = $bdd->exec($sql); echo $nb.' membres ont été supprimés.';?> La variable $nb contient le nombre de lignes affectées (dans ce cas, supprimées) via notre requête.