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

suppose I have the class named as User and user is an object of that class, now I call a function named as storevalues from user(an object of class User). In the storevalues function,__construct function is called which assign the value to the class member.$this->name,$this->email,$this->password.

finally I try to store these values in DATABASE through 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();

But the above code is not working.The connection is successfull made to the database but query is not executed.I want to know what mistake I have done in this code. When I try assigning the class members value to the new variable then it works.The code below shows that method

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

I am a beginner in php and pdo and I know that my code is inefficient.Help me in finding the mistake in first method and identifying my mistakes.

User class

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


}

}

You may catch the SQL error after the execute:

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