Ich bin neu in OOP. Dies sind meine Funktionen. Meine vorbereitete Anweisung ist nicht Arbeits:Schwerwiegender Fehler: Uncaught Fehler: Aufruf zu undefinierter Methode 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();
}
Der Fehler, dass diese Funktion einmal gibt mir aufgerufen wird
Fatal error: Uncaught Error: Call to undefined method Connect::prepare();
Klasse Connect aus ist, wo ich meine Verbindungsinstanz bekommen, und ich bin mir ziemlich sicher, dass ich habe keinen Tippfehler. Vorbereitete Aussagen werden gemacht auf PDO
Klassen, oder? Warum nimmt meine Vorbereitungsanweisung also Connect
Klasse, aber nicht PDO
?
EDIT: Das ist meine Klasse 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' gibt mir noch einen Nullwert. –
Vielen Dank für das Gespräch mit mir. Ich habe mein Problem behoben. Ich habe 'DB :: getInstance ($ dbdetails); 'unterhalb meiner Connect-Klasse hinzugefügt und scheint jetzt zu arbeiten (ohne das $ this -> _ dbh = Verbinden :: getInstance ($ dbdetails) -> getConnection() ; "Teil). –
Wenn Sie das nicht tun, kann '$ this -> _ dbh-> prepare()' nicht funktionieren, da Sie diese Variable nicht gesetzt haben. – Barmar