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
Documents similaires









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