簡體   English   中英

使用MVC類進行兩次PDO連接

[英]PDO connection twice with MVC class

我是MVC的新手,我嘗試將PDO放入模型中

我伸出PDO在我的模型頁面模型 ,從模型擴展

PDO->模型->頁面模型

我的問題是因為頁面模型擴展了Model,所以它將再次構造connect db。 (模型必須構造connect db,因為它是從PDO擴展的)

有人知道怎么修這個東西嗎?

class Model extends PDO{

    protected   $dsn        = "mysql:host=127.0.0.1; dbname=abc; charset=utf8;",
                $username   = "member", 
                $password   = "123",
                $options    = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

    public function __construct(){
        //connect db
        parent::__construct($this->dsn, $this->username, $this->password, $this->options);
        echo "db connect";
    }
}

class index_model extends Model{

    public function __construct(){
        parent::__construct();
        //if i don't add this, will get error,
        //but if i add, I will connect db twice   
    }

    public function mainData(){
        $sql = parent::prepare("SELECT pday FROM pday");    
        $sql->execute();
        $data = $sql->fetch(PDO::FETCH_ASSOC);
        echo $data['pday'];
    }
}

我已經解決了問題,創建了另一個連接類,

並將其放入Model方法內部,頁面模型擴展了模型,因此不會構造兩次連接。

class Model{
   protected $db;

   public function connect(){
            $this->db = new DB;
   }
}

class DB extends PDO{
    protected   $dsn        = "mysql:host=127.0.0.1; dbname=abc; charset=utf8;",
                $username   = "member", 
                $password   = "123",
                $options    = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8');

    public function __construct(){
          parent::__construct($this->dsn, $this->username, $this->password, $this->options);
    }
}

class index_model extends Model{
    private $sql;

    public function mainData(){
        $this->sql = $this->db->prepare("...");
        ...
    }
}

$index = new index_model;
$index->connect();
$index->mainData();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM