2016-05-08 16 views
0

私はUserという名前のクラスを持ち、userはそのクラスのオブジェクトであると仮定します。 user(クラスUserのオブジェクト)からstorevaluesという名前の関数を呼び出します。 storevalues関数では、$ this-> name、$ this-> email、$ this-> passwordの値をクラスメンバーに割り当てる__ construct関数が呼び出されます。コンストラクタを使用してクラス関数でpdoを使用できません

最後に、これらの値をDATABASEを通じてPDOに保存しようとしています。

$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(); 

しかし、上記のコードはworking.The接続ではないが、データベースに対して行われた成功しているが、クエリがexecuted.Iが、私はこのコードでやっていること間違い知りたいではありません。私は新しい変数にクラスメンバの値を代入しようとすると が、それは以下のコードをworks.The方法

$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(); 

は、私はPHPとPDOでの初心者です、私は私のコードはで私inefficient.Helpであることを知っていることを示しています最初の方法で間違いを見つけ、間違いを特定すること。

Userクラス

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

は、あなたが任意のエラーを取得するか、あなたの完全なクラス –

+0

を示して? PDO例外が有効になっていることを確認してください。 – Barmar

+0

このコードにPDO関連のエラーはありません。それはあなたのクラスコードのいくつかのエラーです。 –

答えて

-1

実行した後は、SQLエラーをキャッチすることがあります。

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

PDOは例外をスローすることができます。 –

関連する問題