2016-05-08 9 views
0

Angenommen, ich habe die Klasse als Benutzer und Benutzer ist ein Objekt dieser Klasse, Nun rufe ich eine Funktion namens storevalues ​​von Benutzer (ein Objekt der Klasse Benutzer). In der storevalues-Funktion wird __ construct function aufgerufen, die den Wert dem Klassenmember zuweist. $ This-> name, $ this-> email, $ this-> password.Kann nicht PDO in der Klassenfunktion mit Konstruktor verwenden

schließlich versuche ich diese Werte in DATABASE über PDO zu speichern.

$conn = new PDO(DB_DSN,DB_USERNAME,DB_PASSWORD); 
    $sql="insert into user_info(name,email,password)values(:name,:email,:password)"; 
    $st=$conn->prepare($sql); 
    $st->bindValue(":name",$this->name,PDO::PARAM_STR); 
    $st->bindValue(":email",$ths->email,PDO::PARAM_STR); 
    $st->bindValue(":password",$this->password,PDO::PARAM_STR); 

    $st->execute(); 

Aber der obige Code ist nicht working.The Verbindung erfolgreich hergestellt in die Datenbank aber Abfrage ist nicht executed.I wissen wollen, was Fehler, den ich in diesem Code getan haben. Wenn ich versuche, den Klassenmitglieder Wert auf den neuen Variablen zugewiesen wird dann works.The es folgende Code zeigt, dass Verfahren

$name=$this->name; 
    $email=$this->email; 
    $password=$this->password; 

    $conn = new PDO(DB_DSN,DB_USERNAME,DB_PASSWORD); 
    $sql="insert into user_info(name,email,password)values(:name,:email,:password)"; 
    $st=$conn->prepare($sql); 
    $st->bindParam(":name",$name,PDO::PARAM_STR); 
    $st->bindParam(":email",$email,PDO::PARAM_STR); 
    $st->bindParam(":password",$password,PDO::PARAM_STR); 
    $st->execute(); 

Ich bin ein Anfänger in PHP und gU und ich weiß, dass mein Code inefficient.Help mich in den Fehler in der ersten Methode finden und meine Fehler identifizieren.

Benutzerklasse

class User 
{ 
public $name=null; 
public $email=null; 
public $password=null; 

public function __construct($data=array()) 
{ 
    if(isset($data['name'])) 
     $this->name=$data['name']; 
    if(isset($data['email'])) 
     $this->email=$data['email']; 
    if(isset($data['password'])) 
     $this->password=$data['password']; 
} 
public function storevalues($result=array()) 
{ 

    $this->__construct($result); 
    $conn = new PDO(DB_DSN,DB_USERNAME,DB_PASSWORD); 
    $sql="insert into user_info(name,email,password)values(:name,:email,:password)"; 
    $st=$conn->prepare($sql); 
    $st->bindParam(":name",$this->name,PDO::PARAM_STR); 
    $st->bindParam(":email",$this->email,PDO::PARAM_STR); 
    $st->bindParam(":password",$this->password,PDO::PARAM_STR); 
    $st->execute(); 


} 

}

+0

Ihre volle Klasse zeigen –

+0

Sie einen Fehler bekommen Sie? Stellen Sie sicher, dass Sie PDO-Ausnahmen aktiviert haben. – Barmar

+0

In diesem Code gibt es keinen PDO-bezogenen Fehler. Es ist ein Teil Ihres Klassencodes, der einen Fehler verursacht. –

Antwort

-1

Sie können die SQL-Fehler fangen, nachdem das ausführen:

if (! $st->execute) { 
    Throw new exception('Mysql Error - ' . implode(',', $st->errorInfo())); 
} 
+0

PDO kann Ausnahmen selbst auslösen. –

Verwandte Themen