Im nouveau à OOP. Ce sont mes fonctions. Ma déclaration préparée n'est pas travail:Erreur irrécupérable: Uncaught Erreur: Appel à la méthode non définie prepare()
function __construct($dbdetails){
$this->_dbh = Connect :: getInstance($dbdetails);
return $this->_dbh;
}
function sendData(){
$stmt = $this->_dbh->prepare("INSERT INTO users (username, email, password) VALUES(:username, :email, :password)");
$stmt->bindValue(':username', $this->_sentdetails[0]);
$stmt->bindValue(':email', $this->_sentdetails[1]);
$stmt->bindValue(':password', $this->_sentdetails[2]);
$stmt->execute();
}
L'erreur que cette fonction me donne une fois appelé est
Fatal error: Uncaught Error: Call to undefined method Connect::prepare();
classe Connect d'où je reçois mon exemple de connexion et je suis assez sûr que je ne pas avoir une faute de frappe. Les instructions préparées sont faites sur les classes PDO
, non? Alors, pourquoi ma déclaration de préparation prend-elle Connect
classe mais pas PDO
?
EDIT: Voici ma classe Connect
class Connect{
private $_dbh,
$_host,
$_dbname,
$_username,
$_password;
public static $instance;
//the actual connection
private function __construct($dbdetails){
$this->_host = $dbdetails['host'];
$this->_dbname = $dbdetails['dbname'];
$this->_charset = $dbdetails['charset'];
$this->_username = $dbdetails['username'];
$this->_password = $dbdetails['password'];
try{
$this->_dbh = new PDO("mysql:host=$this->_host;
dbname=$this->_dbname;
charset=$this->_charset",
$this->_username,
$this->_password);
}catch(PDOException $e){
echo "Error : " . $e;
}
}
//creating instance for connection
public function getInstance($dbdetails){
if(!isset(self::$instance)){
return self::$instance = new Connect($dbdetails);
}
else{
return self::$instance->_dbh;
}
}
}
'$ this -> _ dbh' me donne toujours une valeur nulle. –
Merci d'avoir conversé avec moi. J'ai corrigé mon problème J'ai ajouté 'DB :: getInstance ($ dbdetails);' ci-dessous ma classe Connect et semble fonctionner maintenant (sans le '$ this -> _ dbh = Connect :: getInstance ($ dbdetails) -> getConnection() 'partie'. –
Si vous ne faites pas cela, alors '$ this -> _ dbh-> prepare()' ne peut pas fonctionner, puisque vous n'avez pas défini cette variable. – Barmar