码迷,mamicode.com
首页 > 数据库 > 详细

mvc模式下的数据库连接操作

时间:2019-08-01 16:10:03      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:val   one   model   连接失败   变量   select   mic   扩展   name   

mvc模式下数据库操作分为三部分,举一个容易理解的例子,mvc就是一种设计模式,

分为模型(Model),控制器(Controller ),视图(View),各自分工明确,连接数据库操作也遵从于这种模式

一部分是用来设置数据库的的用户名和密码的文件,可同时设置多个数据库的信息,实现可扩展性,

一部分是连接数据库,实例化类的操作,

一部分是用来调用实例化后的对象中的方法,写sql语句部分,分为了三个文件

技术图片

在config.php文件中,设置常量define关于数据库信息,此处可以设置为二维数组,实现连接多个数据库的操作

<?php
define(DB_HOST, localhost);
define(DB_USER, root);
define(DB_PWD, root);
define(DB_NAME, dml);
define(DB_CHARSET,utf8);

将config.php引入到db.php中,此文件主要用来连接数据库,不做其他任何操作

<?php
require_once "config.php";
class db
{
    // 设置静态变量存储实例对象
    private static $db = null;
    // 设置数据库对象
    private static $conn = null;

    private $dbConfig = [
        host => DB_HOST,
        user =>DB_USER,
        pwd => DB_PWD,
        dbname => DB_NAME,
        charset=>DB_CHARSET
    ];
    // 影响数据的行数
    public $rowNum;

    // 影响数据当前的id值
    public $inserId;

    private function __construct()
    {
        $this->conn();
    }
    // 禁止克隆
    private function __clone()
    { }
    // 连接数据库
    private function conn()
    {
        self::$conn = new mysqli(
            $this->dbConfig[host],
            $this->dbConfig[user],
            $this->dbConfig[pwd],
            $this->dbConfig[dbname]
        );
        self::$conn->set_charset($this->dbConfig[charset]);
        if (self::$conn->connect_errno) {
            die("数据库连接失败" . self::$conn->connect_error);
        }
    }


     // 获取类的实例
     public static function getDb(array $parms = [])
     {
         if (!self::$db instanceof self) {
             self::$db = new self($parms);
         }
         return self::$db;
     }

    //  增删改方法,判断数执行是否成功,得到影响的行数和返回当前行的id
    public function exec($sql)
    {
        return self::$conn->query($sql);
        if (self::$conn->affected_rows > 0) {
            $this->rowNum = self::$conn->affected_rows;
            if (self::$conn->insert_id > 0) {
                $this->inserId = self::$conn->insert_id;
            } else {
                echo "执行数据库失败" . self::$conn->connect_error;
            }
        }
    }
    // 查询单条数据
    public function fetch($sql)
    {
        return self::$conn->query($sql)->fetch_assoc();
    }
    // 查询多条数据库内容
    public function fetchall($sql){
        return self::$conn->query($sql)->fetch_all();
    }
    // 关闭数据库
    public function __destruct()
    {
        self::$conn->close();
    }
}

在operation.php文件中,实现我们在db类中定义的方法,建立sql语句

<?php
require_once "db.php";
// 调用getDb方法,将对象赋值给变量a
$a=db::getDb();
// var_dump($a);
// 查询单行的数据
// $sql="SELECT * FROM user";
// var_dump($a->fetch($sql));
// 查询多行的数据
// var_dump($a->fetchall($sql));
// 执行插入数据的操作
// $sql="INSERT `user` (`name`,`password`) VALUES (‘山东省‘,123456)";
// var_dump($a->exec($sql));

 

mvc模式下的数据库连接操作

标签:val   one   model   连接失败   变量   select   mic   扩展   name   

原文地址:https://www.cnblogs.com/dumenglong/p/11283033.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!