<?php // Exemple #1 Connexion Ó MySQL $host='localhost'; $user='root'; $pass=''; $base='test'; $table='eleve'; $dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass); try { $dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass); echo 'vous êtes connecté ! '; $dbh = null; } catch (PDOException $e) { print "Erreur vous êtes non connecté ! erreur en cours : " . $e->getMessage() . " "; die(); } // S'il y a des erreurs de connexion, un objet PDOException // est lancÚ. Vous pouvez attraper cette exception si vous // voulez gÚrer cette erreur, ou laisser le gestionnaire // global d'exception dÚfini via la fonction set_exception_handler() la traiter. //Exemple #2 Gestion des erreurs de connexion try { $dbh = new PDO('mysql:host='.$host.';dbname='.$base, $user, $pass); foreach($dbh->query('SELECT * from '.$table) as $row) { echo ''; print_r($row); echo ' '; } $dbh = null; } catch (PDOException $e) { print "Erreur !: " . $e->getMessage() . " "; die(); } ?>
$pdo = PDO2::getBase(); $requete = 'CREATE DATABASE IF NOT EXISTS '.DBNAME.' DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci'; $teste = $pdo->prepare($requete)->execute(); //si connexion impossible, db existe pas if($teste === true) { //creation de base et tables associées } else die();
SELECT `TABLE_NAME` FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` = DATABASE();
et le singleton... pour n'avoir qu'une connexion
<?php //SINGLETON PR PDO class PDO2 extends PDO { private static $_instance; /* CONSTRUCTEUR : héritage public obligatoire par héritage de PDO */ public function __construct( ) { } // End of PDO2::__construct() */ /* SINGLETON : getInstance */ public static function getInstance() { if (!isset(self::$_instance)) { try { //CONNEXION self::$_instance = new PDO(DSN, USER, PASSWORD); } catch (PDOException $e) { print 'Erreur : '.$e->getMessage().' '; echo 'N° : '.$e->getCode().' '; echo 'Ligne n° : '.$e->getLine(); die(); } } return self::$_instance; } // End of PDO2::getInstance() */ /* getBase */ public function getBase() { try { //CONNEXION $instance = new PDO(DRIVER.':host='.HOST, USER, PASSWORD, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); } catch (PDOException $e) { print 'Erreur : '.$e->getMessage().' '; echo 'N° : '.$e->getCode().' '; echo 'Ligne n° : '.$e->getLine(); die(); } return $instance; } }
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionon peut faire ce que je fais là ?? je veux dire... ça se fait ? (ça me paraît un peu lourdos mais je n'ai pas su faire autrement)
/* CONSTRUCTEUR : héritage public obligatoire par héritage de PDO */
mais l'utilisateur final ne doit avoir aucune connaissance du détail de l'erreurcomplètement d'accord
<?php private $exception_handler = array(); private function exception_handler($e) { return array("mess" => $e->getMessage(), "code" => $e->getCode(), "line" => $e->getLine()); }?>
<?php get_exception_handler() { return $this->_exception_handler }?>
<?php catch (PDOException $e) { exception_handler($e) }?>
<?php $exception_handler = function($exception) { // whatever to log the exception die(); }; set_exception_handler($exception_handler); ?>
Je ne suis pas sensée utiliser ma classe étendue de pdo... ?
l'utilisation de pdo et le singleton