Syntaxe pour une classe qui hérite de PDO
bonjour,
je rencontre un souci avec une fonction, voila d'abord le code...
ma page classique :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
//inclusion de mon fichier de classe.....
$pdo = PDO2::getInstance();
$composants = new composants();
$compo = $_SESSION['id_composant_EC']; // a pour valeur: a
//test1
$ls = $composants->selInfosCompoId($compo);
//test2
$resultats = $pdo->query('SELECT * FROM '.TB_ART);
$resultats->setFetchMode(PDO::FETCH_OBJ);
//test3
$resultats_prep=$pdo->prepare('SELECT * FROM '.TB_ART);
$resultats_prep->execute(); |
et mon fichier de classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
class PDO2 extends PDO {
private static $instance = null;
private $PDOInstance = null;
/* Constructeur : héritage public obligatoire par héritage de PDO */
public function __construct( ) {
}
// End of PDO2::__construct() */
/* Singleton */
public static function getInstance() {
if(is_null(self::$instance)){
self::$instance = new PDO(SQL_DSN, SQL_LOGIN, SQL_PASSWORD);
}
return self::$instance;
}
public function query($query){
return $this->PDOInstance->query($query);
}
//select general avec where
public function sqlSelect($var,$nomtable,$nomwhere){
$sql = "SELECT $var FROM $nomtable WHERE $nomwhere";
$result=$this->query($sql);
if(DBUG_SITE == 'o'){
echo $sql."<br />";
}
return $result;
}
// End of PDO2::getInstance() */
}
//////////////////////////////////
class composants extends PDO2{
//recupere toutes les infos en fonction de l'id
function selInfosCompoId($id){
$req = PDO2::sqlSelect("*",TB_COMPO,"id='$id'");
return $req;
}
} |
voila le souci que je rencontre :
le test 2 & 3 fonctionnent bien alors que pour le 1er j'ai ce message d'erreur :
Code:
Call to a member function query() on a non-object
apparement de ma classe composant j'arrive pas appeler la fonction query de la classe pdo2.
parce qu'avec le test2 je l'utilise.
je dois surement faire des trucs de travers ??
quelqu'un peut me dire comme je fais pour resoudre ce probleme ??
merci beaucoup ;)
.fey