如何在类构造函数中连接数据库?

时间:2015-09-15 15:37:28

标签: php mysql class oop

代码

connect.php

$username   = "USERNAME";
$password   = "PASSWORD";
$hostname   = "HOSTNAME";
$dbname     = 'DATABASE';

try { $dbh = new PDO("mysql:host=$hostname;dbname=$dbname", $username, $password); }

catch(PDOException $e){ echo($e->getMessage()); }

users.php

include "/connect.php";

class User
{   
    private $id, $name1, $name2, $email, $pic, $league_id;

    //Constructor
    public function __construct($id)
    {
        $stmt = $dbh->prepare("SELECT * FROM `users` WHERE `id`=?");
        $stmt->execute(array($id));
        if($stmt->rowCount()<1) exit("Could not find user");
        $row = $stmt->fetch(PDO::FETCH_ASSOC);

        $this->id = $row["id"];
        $this->name1 = $row["name1"];
        $this->name2 = $row["name2"];
        $this->pic = $row["pic"];
        $this->league_id = $row["league_id"];
    }

    //functions - Get
    public function getId() { return $this->id; }
    public function getName1(){ return $this->name1; }
    public function getName2(){ return $this->name2; }
    public function getFullName() { return $this->name1 . " " . $this->name2; }
    public function getPic(){ return $this->pic; }
    public function getLeagueId(){ return $this->league_id; }
}

的index.php

if(isLoggedIn()) {
    $user = new User($_SESSION["userid"]);
    echo "Welcome back, ".$user->getFullName()."!";
}

问题

我是PHP新的类和OOP,所以对代码表示道歉。

我在connect.php中连接到数据库,但我在__constructor函数中处理查询时遇到了问题。

我知道我不能include构造函数中的连接。我还看到,如果我直接将connect.php中的代码插入到函数中,代码就可以工作。

但是,每次我想进行查询时,我都不想连接到数据库;有没有一种方法可以连接__construct函数的外部

就重复而言,链接的问题不会回答这个问题。我的问题是:&#34;如何在我的对象的/connect.php函数中访问__construct中的对象?&#34;

0 个答案:

没有答案