PHP OOP - 我的用户类无法识别“prepare()”语句

时间:2016-04-11 16:00:25

标签: php oop pdo

我正在为论坛创建一个User类,我刚刚开始创建一个注册页面。目前我有一个User类和一个Database Class。所有数据库类都返回对象构造的数据库连接。然后,我在构造中的User类中创建一个DB对象,并将连接存储在类变量中。但是,当我尝试使用prepare()语句时,它被视为未定义。为什么呢?

class User
            {
                private $id;
                private $username;
                private $password;
                private $joindate;
                private $dbconn;

                public function __construct(){
                    $this->dbconn = new DB('127.0.0.1', 'forumdb', 'root', '' );

                }

                public function setAll($username, $password){
                    $this->username = $username;
                    $this->password = $password;
                    //$this->joindate = now();
                }

                public function userToDB(){
                    try {
                         # sql
                        $sql = "INSERT INTO users (username, password) 
                        VALUES (?, ?)";
                        # prepare
                        $stmt = $this->dbconn->prepare($sql);
                        # the data we want to insert
                        $data = array($this->username, password_hash($this->password));
                         # execute width array-parameter
                        $stmt->execute($data);

                        echo "New records created successfully";
                    }

                    catch(PDOException $e)
                        {
                        echo $sql . "<br>" . $e->getMessage();
                    }
                }

            }

class DB
            {

                public function __construct($host, $dbname, $dbuser, $dbpass){
                    try {
                    $db = new PDO("mysql:host=$host;dbname=$dbname;", $dbuser, 
                    $dbpass, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'UTF8'"));
                    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    return $db;
                    /*** echo a message saying we have connected ***/
                    echo 'Connected to database.<br />';
                    }
                    catch(PDOException $e){
                        // For debug purpose, shows all connection details
                        echo 'Connection failed: '.$e->getMessage()."<br />";
                          // Hide connection details.
                        //echo 'Could not connect to database.<br />'); 
                    }
                }


            }

当我在我的注册页面的User类中调用userToDB方法时,会出现问题。

0 个答案:

没有答案