Comment utiliser la classe PDO dans WAMP5 ?
Posté : 05 mars 2009, 16:38
Bonjour,
je suis novice en php. Actuellement j'essaie de faire tourner une application mais elle génère le message d'erreur suivant :
"Définition de classe inexistante : PDO ../Classes/PDO.class.php "
Sachant que :
- Une classe DAO a été définie pour gérer les accès à la base de données.
- j'ai activé les extensions "php_pdo.dll", "php_pdo_mysqli.dll", "php_pdo_mysql.dll"
dans le fichier php.ini sans que cela change quelque chose.
- Il n'y a pas de fichier "PDO.class.php" dans mon répertoire ../Classes puisque la définition
de classes est censé être fournie en activant les extensions.
ci-après des bouts de codes qui peuvent vous aider à comprendre le contexte :
Code de la classe DAO
Fonction qui a généré l'erreur
Sans doute suite à un appel du constructeur de DAO qui lui-même appelle celui de PDO.
cette fonction se trouve dans un autre fichier.
Si quelqu'un peut me dire pourquoi la classe PDO n'est pas visible et accessoirement comment résoudre mon problème, ça m'aiderait beaucoup.
S'il faut des précisions aussi n'hésitez pas.
Merci d'avance.
P.S.:
Ma config:
Windows XP Pro SP2
Pentium 4 / 2,6 GH / 496 Ram
je suis novice en php. Actuellement j'essaie de faire tourner une application mais elle génère le message d'erreur suivant :
"Définition de classe inexistante : PDO ../Classes/PDO.class.php "
Sachant que :
- Une classe DAO a été définie pour gérer les accès à la base de données.
- j'ai activé les extensions "php_pdo.dll", "php_pdo_mysqli.dll", "php_pdo_mysql.dll"
dans le fichier php.ini sans que cela change quelque chose.
- Il n'y a pas de fichier "PDO.class.php" dans mon répertoire ../Classes puisque la définition
de classes est censé être fournie en activant les extensions.
ci-après des bouts de codes qui peuvent vous aider à comprendre le contexte :
Code de la classe DAO
/**
* Classe d'accès aux données
* Cette classe est passé sur PDO (PHP Data Objects) qui permet d'abstraire la couche de données
* Voir fr.php.net/PDO pour plus d'informations
*/
class DAO {
private $dbh;
protected function __construct() {
try{
$this->dbh = new PDO( 'mysql:host=' . SERVER . ';dbname=' . DBASE , USER , PWD );
}
catch (PDOException $e){
echo "__warning\nErreur [DB] => " . $e->getMessage();
}
}
public function exec($p_query){
try{
$stmt = $this->dbh->prepare($p_query);
$stmt->execute();
}
catch (PDOException $e){
echo "__warning\nErreur [DB] => " . $e->getMessage();
}
return $stmt;
}
public function exec_nquery($p_query){
try{
$stmt = $this->dbh->prepare($p_query);
$this->dbh->beginTransaction();
$stmt->execute();
$this->dbh->commit();
}
catch (PDOException $e){
echo "__warning\nErreur [DB] => " . $e->getMessage();
}
}
}
Fonction qui a généré l'erreur
Sans doute suite à un appel du constructeur de DAO qui lui-même appelle celui de PDO.
cette fonction se trouve dans un autre fichier.
/*
* Permet d'inclure la classe si elle ne l'est pas quand l'utilisateur créer une instance
*/
function __autoload($ClassName) {
$_class = $DOCUMENT_ROOT . '../Classes/' . $ClassName . '.class.php';
if(file_exists($_class)){
require_once($_class);
}
else{
die("Définition de classe inexistante : " . $ClassName . "\n" . $_class . "\n" . $_factory);
}
}
Si quelqu'un peut me dire pourquoi la classe PDO n'est pas visible et accessoirement comment résoudre mon problème, ça m'aiderait beaucoup.
S'il faut des précisions aussi n'hésitez pas.
Merci d'avance.
P.S.:
Ma config:
Windows XP Pro SP2
Pentium 4 / 2,6 GH / 496 Ram