PHP PDO Programmation PHP PDO 1 INTRODUCTION Programmation

  • Slides: 18
Download presentation
PHP PDO Programmation PHP / PDO 1

PHP PDO Programmation PHP / PDO 1

INTRODUCTION Programmation PHP / PDO 2

INTRODUCTION Programmation PHP / PDO 2

PDO § PDO : PHP Data Objects § Extension PHP fournissant une interface pour

PDO § PDO : PHP Data Objects § Extension PHP fournissant une interface pour accéder à une base de données § Fournit une interface d'abstraction pour l'accès aux données § Ne fournit PAS une abstraction de base de données n SQL spécifique au moteur n Fonctionnalités présentes / absentes § Interface orientée objet Programmation PHP / PDO 3

Bases de données supportées Nom du pilote Bases de données prises en charge PDO_CUBRID

Bases de données supportées Nom du pilote Bases de données prises en charge PDO_CUBRID Cubrid PDO_DBLIB Free. TDS / Microsoft SQL Server / Sybase PDO_FIREBIRD Firebird PDO_IBM DB 2 PDO_INFORMIX IBM Informix Dynamic Server PDO_MYSQL My. SQL 3. x/4. x/5. x PDO_OCI Oracle Call Interface PDO_ODBC v 3 (IBM DB 2, unix. ODBC et win 32 ODBC) PDO_PGSQL Postgre. SQL PDO_SQLITE SQLite 3 et SQLite 2 PDO_SQLSRV Microsoft SQL Server / SQL Azure PDO_4 D 4 D Programmation PHP / PDO 4

Échanges de données Serveur Web 1 6 Requête HTTP Réponse HTTP 3 2 Script

Échanges de données Serveur Web 1 6 Requête HTTP Réponse HTTP 3 2 Script PHP 5 Résultat BD Connexion BD 4 7 Requête BD Affichage résultat BD Mon PC Serveur BD Programmation PHP / PDO 5

COMMENT SE CONNECTER ? Programmation PHP / PDO 6

COMMENT SE CONNECTER ? Programmation PHP / PDO 6

Connexions et gestionnaire de connexion § § § Instanciation d'un objet PDO $dbh=new PDO(DSN

Connexions et gestionnaire de connexion § § § Instanciation d'un objet PDO $dbh=new PDO(DSN [, user [, pass [, options]]]); DSN : Data Source Name § § nom_du_driver: syntaxe_spécifique_au_driver Ex : mysql: host=localhost; dbname=ma_base § user : nom d'utilisateur, pass : mot de passe § options : tableau associatif n n spécifiques au driver Ex : array(PDO: : ATTR_PERSISTENT => true)) ; § Fin de connexion : $dbh=null ; ou unset($dbh) ; Programmation PHP / PDO 7

Gestion des erreurs de connexion <? php try { $dbh = new PDO('mysql: host=h;

Gestion des erreurs de connexion <? php try { $dbh = new PDO('mysql: host=h; dbname=db', $user, $pass) ; … $dbh = null ; } catch (PDOException $e) { echo "<p>Erreur: ". $e->get. Message() ; die() ; } ? > Programmation PHP / PDO 8

EFFECTUER UNE REQUÊTE Programmation PHP / PDO 9

EFFECTUER UNE REQUÊTE Programmation PHP / PDO 9

Exécution d'une requête § PDOStatement PDO: : query ( string statement ) Résultat de

Exécution d'une requête § PDOStatement PDO: : query ( string statement ) Résultat de requête Requête <? php try { $pdo = new PDO("mysql: host=localhost") ; $pdostat = $pdo->query("SELECT * FROM clients") ; } catch (Exception $e) { echo "<p>ERREUR : ". $e->get. Message() ; } Programmation PHP / PDO 10

Exploitation des résultats d'une requête § Récupération des données ligne à ligne § Une

Exploitation des résultats d'une requête § Récupération des données ligne à ligne § Une ligne peut être : n n n un tableau indexé un tableau associatif un tableau mixte (par défaut) un objet anonyme un objet d'une classe définie par l'utilisateur § Récupération des données d'une colonne Programmation PHP / PDO 11

Parcours du résultat d'une requête § Parcourir le résultat de la requête SELECT *

Parcours du résultat d'une requête § Parcourir le résultat de la requête SELECT * FROM morceau ORDER BY mor_id Résultat de requête Curseur interne +----------------------+ | mor_id | mor_nom | +----------------------+ | 872 | With A Little Help From My Friends | | 873 | The Letter | | 874 | Marjorine | | 875 | Midnight Rider | | 876 | You Are So Beautiful | | 877 | Feelin' Allright | | 878 | Cry Me A River |. . . Programmation PHP / PDO 12

Exploitation des résultats d'une requête (1) try { $pdo=new PDO("mysql: host=localhost; dbname=mysql") ; $pdo->set.

Exploitation des résultats d'une requête (1) try { $pdo=new PDO("mysql: host=localhost; dbname=mysql") ; $pdo->set. Attribute(PDO: : ATTR_ERRMODE, PDO: : ERRMODE_EXCEPTION); $pdostat = $pdo->query("SELECT name FROM user") ; $pdostat->set. Fetch. Mode(PDO: : FETCH_ASSOC) ; foreach ($pdostat as $ligne) { echo "<p>". $ligne['name']. "n" ; } } catch (Exception $e) { echo "<p>ERREUR : ". $e->get. Message() ; } Programmation PHP / PDO 13

Exploitation des résultats d'une requête (2) try { $pdo=new PDO("mysql: host=localhost; dbname=mysql") ; $pdo->set.

Exploitation des résultats d'une requête (2) try { $pdo=new PDO("mysql: host=localhost; dbname=mysql") ; $pdo->set. Attribute(PDO: : ATTR_ERRMODE, PDO: : ERRMODE_EXCEPTION); $pdostat = $pdo->query("SELECT name FROM user") ; foreach ($pdostat->fetch. All(PDO: : FETCH_ASSOC) as $ligne) { echo "<p>". $ligne['name']. "n" ; } } catch (Exception $e) { echo "<p>ERREUR : ". $e->get. Message() ; } Programmation PHP / PDO 14

Exploitation des résultats d'une requête (3) try { $pdo=new PDO("mysql: host=localhost; dbname=mysql") ; $pdo->set.

Exploitation des résultats d'une requête (3) try { $pdo=new PDO("mysql: host=localhost; dbname=mysql") ; $pdo->set. Attribute(PDO: : ATTR_ERRMODE, PDO: : ERRMODE_EXCEPTION); $pdostat = $pdo->query("SELECT name FROM user") ; while ($ligne = $pdostat->fetch(PDO: : FETCH_ASSOC)) { echo "<p>". $ligne['name']. "n" ; } } catch (Exception $e) { echo "<p>ERREUR : ". $e->get. Message() ; } Programmation PHP / PDO 15

Modes de récupération des données (1) § PDO: : FETCH_ASSOC n retourner chaque ligne

Modes de récupération des données (1) § PDO: : FETCH_ASSOC n retourner chaque ligne dans un tableau indexé par les noms des colonnes comme elles sont retournées dans le jeu de résultats correspondant. Si le jeu de résultats contient de multiples colonnes avec le même nom, PDO: : FETCH_ASSOC retourne une seule valeur par nom de colonne. § PDO: : FETCH_NUM n retourner chaque ligne dans un tableau indexé par le numéro des colonnes comme elles sont retournées dans le jeu de résultats correspondant, en commençant à 0. Programmation PHP / PDO 16

Modes de récupération des données (2) § PDO: : FETCH_OBJ n retourner chaque ligne

Modes de récupération des données (2) § PDO: : FETCH_OBJ n retourner chaque ligne dans un objet avec les noms de propriétés correspondant aux noms des colonnes comme elles sont retournées dans le jeu de résultats. § PDO: : FETCH_CLASS | PDO: : FETCH_CLASSTYPE n retourner une nouvelle instance de la classe demandée, liant les colonnes aux propriétés nommées dans la classe. Nom de la classe = 1ère colonne. Programmation PHP / PDO 17

Exemple avec PDO: : FETCH_CLASS $stmt = $pdo->query("SELECT id, name FROM artist WHERE id

Exemple avec PDO: : FETCH_CLASS $stmt = $pdo->query("SELECT id, name FROM artist WHERE id = 12") ; $stmt->set. Fetch. Mode(PDO: : FETCH_CLASS, 'Artist') ; if (($object = $stmt->fetch()) !== false) { return $object ; } Instancie un objet de la classe Artist dont les attributs sont supposés être id et name Programmation PHP / PDO 18