如何包括与用户类的pdo连接?

时间:2018-11-13 13:28:16

标签: php mysqli pdo

我想在我的站点中包含一个用户类,以便用户登录和注册。 我已经完成了所有部分的工作,除了在课堂上包括我的连接,实际上,课堂上有它自己的config.php,但是我不能使用它。 我的网站可以正常运行并且可以正常查询,但是类配置不允许类外查询。 因此,我需要在课堂中加入自己的连接,以用作课堂外的$stmt=$pdo->prepare查询。 我尝试了很多变化,并尽了最大的努力使它起作用,但是每次尝试都失败了。

需要您的帮助。

  

这是我的config.php

Class Dbh{
    private $servername;
    private $username;
    private $password;
    private $dbname;
    private $charset;

    protected function Connect(){
        $this->servername = "localhost";
        $this->username = "localhost";
        $this->password = "localhost";
        $this->dbname = "localhost";
        $this->charset = "UTF-8";

        try {

        $dsn = "mysql:host=".$this->servername.";dbname=".$this->dbname.";charset=".$this->charset;
        $pdo = new PDO($dsn, $this->username, $this->password);
        return $pdo;
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

        } catch (PDOException $e) {
            return "Connection Failed!: " . $e->getMessage();
            die();
            }
    }
}

    $user = new User();
    $user->dbConnect(dsn, username, password);
  

这是我的课程连接部分

class User{
    /** @var object $pdo Copy of PDO connection */
    private $pdo;
    /** @var object of the logged in user */
    private $user;
    /** @var string error msg */
    private $msg;
    /** @var int number of permitted wrong login attemps */
    private $permitedAttemps = 5;

    /**
    * Connection init function
    * @param string $conString DB connection string.
    * @param string $user DB user.
    * @param string $pass DB password.
    *
    * @return bool Returns connection success.
    */
    public function dbConnect($dsn, $username, $password){
        if(session_status() === PHP_SESSION_ACTIVE){
            try {
                $pdo = new PDO($dsn, $username, $password);
                $this->pdo = $pdo;
                return true;
            }catch(PDOException $e) { 
                $this->msg = 'Connection did not work out!';
                return false;
            }
        }else{
            $this->msg = 'Session did not start.';
            return false;
        }
    }
}

1 个答案:

答案 0 :(得分:0)

更改行

Class Dbh{

成为

class Dbh extends User{

,并且两个类都在同一个文件中,那么您现在就可以访问两个类中的函数。

如果它们不在同一个文件中,请添加第一个这样的文件:

include 'userClassFile.php';

class Dbh extends User{
    //Your code here
}

我已经用一个非常简短的例子来尝试了这一点:

<?php

class classOne{
    function funcOne(){
        echo "Output";
    }
}

class classTwo extends classOne{
    function funcTwo(){
        $this->funcOne();
    }
}

$c2 = new classTwo();
$c2->funcTwo();

我希望看到Output,也看到Output