不能使用构造函数在类函数中使用pdo

时间:2016-05-08 07:06:58

标签: php sql pdo

假设我有一个名为User的类,而user是该类的一个对象, 现在我从用户(类User的对象)调用名为storevalues的函数。 在storevalues函数中,调用__ construct函数,将值赋给类成员。$ this-> name,$ this-> email,$ this-> password。

最后我尝试通过PDO将这些值存储在DATABASE中。

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

但上面的代码不起作用。连接成功进入数据库但查询没有执行。我想知道我在这段代码中做了什么错误。 当我尝试将类成员值分配给新变量时,它就可以工作。下面的代码显示了方法

    $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的初学者,我知道我的代码效率很低。帮助我找到第一种方法中的错误并识别我的错误。

用户类

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


}

}

1 个答案:

答案 0 :(得分:-1)

执行后可能会捕获SQL错误:

tmp