22:29:23 22:29:23 Programmation Web 2013-2014 Programmation Web 2013-2014 1 1 P

22:29:23 22:29:23 Programmation Web 2013-2014 Programmation Web 2013-2014 1 1 PHP PHP PDO PDO Jérôme CUTRONA Jérôme CUTRONA jerome.cutrona@univ-reims.fr jerome.cutrona@univ-reims.fr 2 2 22:29:27 22:29:27 Programmation Web 2013-2014 Programmation Web 2013-2014 PDO PDO PDO : PDO : P PHP HP D Data ata O Objects bjects Extension PHP fournissant une interface pour Extension PHP fournissant une interface pour accéder à une base de données accéder à une base de données Fournit une interface d' Fournit une interface d'abstraction pour l'accès abstraction pour l'accès aux données aux données Ne fournit Ne fournit PAS PAS une une abstraction de base de abstraction de base de données données SQL spécifique au moteur SQL spécifique au moteur Fonctionnalités présentes / absentes Fonctionnalités présentes / absentes Interface orientée objet Interface orientée objet Bases de données supportées Bases de données supportées Nom du driver Nom du driver Bases de données supportées Bases de données supportées PDO_DBLIB PDO_DBLIB FreeTDS / Microsoft SQL Server / Sybase FreeTDS / Microsoft SQL Server / Sybase PDO_FIREBIRD PDO_FIREBIRD Firebird/Interbase 6 Firebird/Interbase 6 PDO_IBM PDO_IBM IBM DB2 IBM DB2 PDO_INFORMIX PDO_INFORMIX IBM Informix Dynamic Server IBM Informix Dynamic Server PDO_MYSQL PDO_MYSQL MySQL 3.x/4.x/5.x MySQL 3.x/4.x/5.x PDO_OCI PDO_OCI Oracle Call Interface Oracle Call Interface PDO_ODBC PDO_ODBC ODBC v3 (IBM DB2, unixODBC et win32 ODBC) ODBC v3 (IBM DB2, unixODBC et win32 ODBC) PDO_PGSQL PDO_PGSQL PostgreSQL PostgreSQL PDO_SQLITE PDO_SQLITE SQLite 3 et SQLite 2 SQLite 3 et SQLite 2 PDO_4D PDO_4D 4D 4D 3 3 22:29:31 22:29:31 Programmation Web 2013-2014 Programmation Web 2013-2014 4 4 22:29:34 22:29:34 Programmation Web 2013-2014 Programmation Web 2013-2014 Classes prédéfinies Classes prédéfinies PDO PDO : : connexion PHP / base de données connexion PHP / base de données __construct() __construct() exec(), prepare(), query() exec(), prepare(), query() errorCode(), errorInfo() errorCode(), errorInfo() getAttributes(), setAttribute() getAttributes(), setAttribute() lastInsertId(), quote() lastInsertId(), quote() beginTransaction() beginTransaction() commit(), rollBack() commit(), rollBack() getAvailableDrivers() getAvailableDrivers() 5 5 22:29:38 22:29:38 Programmation Web 2013-2014 Programmation Web 2013-2014 Classes prédéfinies Classes prédéfinies PDOStatement PDOStatement : : requête préparée, jeu de résultats requête préparée, jeu de résultats bindColumn(), bindParam(), bindValue(), bindColumn(), bindParam(), bindValue(), closeCursor() closeCursor() errorCode(), errorInfo() errorCode(), errorInfo() fetch(), fetchAll(), fetchColumn(), fetchObject(), fetch(), fetchAll(), fetchColumn(), fetchObject(), setFetchMode(), nextRowset() setFetchMode(), nextRowset() rowCount(), columnCount(), getColumnMeta() rowCount(), columnCount(), getColumnMeta() getAttribute(), setAttribute() getAttribute(), setAttribute() execute() execute() debugDumpParams() debugDumpParams() 6 6 22:29:42 22:29:42 Programmation Web 2013-2014 Programmation Web 2013-2014 Connexions et gestionnaire de connexion Connexions et gestionnaire de connexion Instanciation d'un objet Instanciation d'un objet PDO PDO $dbh=new $dbh=new PDO PDO( (DSN DSN [, [, user user [, [, pass pass [, [, options options]]]); ]]]); DSN DSN : : D Data ata S Source ource N Name ame nom_du_driver:syntaxe_spécifique_au_driver nom_du_driver:syntaxe_spécifique_au_driver Ex : Ex : mysql:host=localhost;dbname=ma_base mysql:host=localhost;dbname=ma_base user user : nom d'utilisateur, : nom d'utilisateur, pass pass : mot de passe : mot de passe options options : tableau associatif : tableau associatif spécifiques au driver spécifiques au driver Ex : array(PDO::ATTR_PERSISTENT => true)) ; Ex : array(PDO::ATTR_PERSISTENT => true)) ; Fin de connexion : $dbh=null ; ou unset($dbh) ; Fin de connexion : $dbh=null ; ou unset($dbh) ; 7 7 22:29:45 22:29:45 Programmation Web 2013-2014 Programmation Web 2013-2014 Gestion des erreurs de connexion Gestion des erreurs de connexion Connexion par construction d'un objet Connexion par construction d'un objet Gestion envisageable des erreurs Gestion envisageable des erreurs Aucune Aucune Fin brutale (exit, die) Fin brutale (exit, die) État État Exception Exception En cas d'erreur de connexion En cas d'erreur de connexion Objet Objet PDOException PDOException lancé lancé PDOException PDOException hérite de Exception hérite de Exception 8 8 22:29:49 22:29:49 Programmation Web 2013-2014 Programmation Web 2013-2014 Gestion des erreurs de connexion Gestion des erreurs de connexion <?php <?php try try { { $ $dbh dbh = = new new PDO PDO( (' 'mysql:host=h;dbname=db mysql:host=h;dbname=db', ', $ $user user, , $ $pass pass) ) ; ; … … $ $dbh dbh = = null null ; ; } } catch catch ( (PDOException PDOException $ $e e) ) { { echo echo " "Erreur: Erreur: " ".$ .$e e-> ->getMessage getMessage() (). ." "<br/> <br/>" " ; ; die die() () ; ; } } ?> ?> 9 9 22:29:53 22:29:53 Programmation Web 2013-2014 Programmation Web 2013-2014 Gestion des erreurs (hormis connexion) Gestion des erreurs (hormis connexion) PDO::ERRMODE_SILENT PDO::ERRMODE_SILENT ( (par défaut par défaut) ) Mode Mode silencieux silencieux, mise en place d'un , mise en place d'un code d'erreur code d'erreur PDO : PDO : errorCode errorCode() / () / errorInfo errorInfo() () PDOStatement : PDOStatement : errorCode errorCode() / () / errorInfo errorInfo() () PDO::ERRMODE_WARNING PDO::ERRMODE_WARNING Mise en place du Mise en place du code d'erreur code d'erreur Émission d'une erreur de type Émission d'une erreur de type E_WARNING E_WARNING PDO::ERRMODE_EXCEPTION PDO::ERRMODE_EXCEPTION Mise en place du Mise en place du code d'erreur code d'erreur Objet Objet PDOException PDOException lancé lancé 10 10 22:29:56 22:29:56 Programmation Web 2013-2014 Programmation Web 2013-2014 Gestion des erreurs (hormis connexion) Gestion des erreurs (hormis connexion) <?php <?php try try { { $ $dbh dbh = = new new PDO PDO( (' 'mysql:host=h;dbname=db mysql:host=h;dbname=db', ', $ $user user, , $ $pass pass) ) ; ; $ $dbh dbh-> ->setAttribute setAttribute( (PDO PDO:: ::ATTR_ERRMODE, ATTR_ERRMODE, PDO PDO:: ::ERRMODE_EXCEPTION ERRMODE_EXCEPTION) ); ; … … $ $dbh dbh = = null null ; ; } } catch catch ( (PDOException PDOException $ $e e) ) { { echo echo " "Erreur: Erreur: " ".$ .$e e-> ->getMessage getMessage() (). ." "<br/> <br/>" " ; ; die die() () ; ; } } ?> ?> 11 11 22:30:00 22:30:00 Programmation Web 2013-2014 Programmation Web 2013-2014 Gestion des erreurs : code d'erreur Gestion des erreurs : code d'erreur <?php <?php $ $pdo pdo = = new new PDO PDO( (" "mysql:host=localhost mysql:host=localhost" ") ) ; ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "COUCOU COUCOU" ") ) ; ; if if ( ($ $pdo pdo-> ->errorCode errorCode()) ()) { { echo echo " "ERREUR !! ERREUR !!\n \n" " ; ; echo echo " "<pre> <pre>\n \n" " ; ; var_dump var_dump( ($ $pdo pdo-> ->errorInfo errorInfo()) ()) ; ; echo echo " "</pre> </pre>\n \n" " ; ; } } ?> ?> ERREUR !! ERREUR !! array(3) { array(3) { [0]=> string(5) "42000" [0]=> string(5) "42000" [1]=> int(1064) [1]=> int(1064) [2]=> string(47) "Erreur de syntaxe près de 'COUCOU' à la ligne 1" [2]=> string(47) "Erreur de syntaxe près de 'COUCOU' à la ligne 1" } } Code SQLSTATE Code SQLSTATE Code erreur spécifique Code erreur spécifique du driver du driver Chaîne erreur Chaîne erreur spécifique au driver spécifique au driver 12 12 22:30:03 22:30:03 Programmation Web 2013-2014 Programmation Web 2013-2014 Gestion des erreurs : exceptions Gestion des erreurs : exceptions <?php <?php try try { { $ $pdo pdo = = new new PDO PDO( (" "mysql:host=localhost mysql:host=localhost" ") ) ; ; $ $pdo pdo-> ->setAttribute setAttribute( (PDO PDO:: ::ATTR_ERRMODE, ATTR_ERRMODE, PDO PDO:: ::ERRMODE_EXCEPTION ERRMODE_EXCEPTION) ) ; ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "COUCOU COUCOU" ") ) ; ; } } catch catch ( (Exception Exception $ $e e) ) { { echo echo " "ERREUR : ERREUR : " ".$ .$e e-> ->getMessage getMessage() () ; ; } } ?> ?> ERREUR : SQLSTATE[42000]: Syntax error or access violation: 1064 ERREUR : SQLSTATE[42000]: Syntax error or access violation: 1064 Erreur de syntaxe près de 'COUCOU' à la ligne 1 Erreur de syntaxe près de 'COUCOU' à la ligne 1 Code SQLSTATE Code SQLSTATE Code erreur spécifique Code erreur spécifique du driver du driver Chaîne erreur Chaîne erreur spécifique au driver spécifique au driver 13 13 22:30:07 22:30:07 Programmation Web 2013-2014 Programmation Web 2013-2014 Exécution d'une requête Exécution d'une requête PDOStatement PDOStatement PDO::query PDO::query ( ( string string statement statement ) ) <?php <?php try try { { $ $pdo pdo = = new new PDO PDO( (" "mysql:host=localhost mysql:host=localhost" ") ) ; ; $ $pdostat pdostat = = $ $pdo pdo-> ->query query( (" "SELECT * FROM clients SELECT * FROM clients" ") ) ; ; } } catch catch ( (Exception Exception $ $e e) ) { { echo echo " "ERREUR : ERREUR : " ".$ .$e e-> ->getMessage getMessage() () ; ; } } ?> ?> Requête Requête Résultat de requête Résultat de requête 14 14 22:30:11 22:30:11 Programmation Web 2013-2014 Programmation Web 2013-2014 Exploitation des résultats d'une requête Exploitation des résultats d'une requête Récupération des données ligne à ligne Récupération des données ligne à ligne Une ligne peut être : Une ligne peut être : un tableau indexé un tableau indexé un tableau associatif un tableau associatif un tableau mixte (par défaut) un tableau mixte (par défaut) un objet anonyme un objet anonyme un objet d'une classe définie par l'utilisateur un objet d'une classe définie par l'utilisateur Récupération des données d'une colonne Récupération des données d'une colonne 15 15 22:30:14 22:30:14 Programmation Web 2013-2014 Programmation Web 2013-2014 Exploitation des résultats d'une requête (1) Exploitation des résultats d'une requête (1) try try { { $ $pdo pdo= =new new PDO PDO( (" "mysql:host=localhost;dbname=mysql uploads/Finance/483-19-php-pdo.pdf

  • 32
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Nov 12, 2021
  • Catégorie Business / Finance
  • Langue French
  • Taille du fichier 0.5688MB