繁体   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