首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在使用构造函数的类函数中使用pdo

问无法在使用构造函数的类函数中使用pdo
EN

Stack Overflow用户
提问于 2016-05-08 15:06:58
回答 1查看 57关注 0票数 1

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

最后,我尝试通过PDO将这些值存储在数据库中。

代码语言:javascript
复制
    $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连接到数据库成功,但是查询没有执行。我想知道我在这段代码中做错了什么。当我尝试将类成员值赋给新变量时,下面的works.The代码显示了该方法

代码语言:javascript
复制
    $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我在第一个方法中找到错误,并确定我的错误。

用户类

代码语言:javascript
复制
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();


}

}

EN

回答 1

Stack Overflow用户

发布于 2016-05-08 15:20:43

您可以在执行后捕获SQL错误:

代码语言:javascript
复制
if ( ! $st->execute) {
    Throw new exception('Mysql Error - ' . implode(',', $st->errorInfo()));
}
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37097192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档