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

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));

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

时间: 2024-08-12 19:38:22

mvc模式下的数据库连接操作的相关文章

MVC模式下基于SSH三大框架的java web项目excel表格的导出(不依赖另外的jar包)

最近工作中碰到了需要将web页面的表格内容导出到excel表格并下载到本地的需求.以下是在利用网上资源.与同事探讨下,完成的代码. 首先我们需要有定义好的实体类.以下是截取了项目中用到的部分代码. 1 public class QyggDocuments implements java.io.Serializable { 2 3 private static final long serialVersionUID = -2543382529255041149L; 4 5 private Stri

.net MVC模式下easyui datagrid控件分页

此参照一位仁兄代码,稍作修改 视图代码: <div id="tab" class="easyui-tabs" data-options="tools:'#tab-tools'" style="width:800px;height:400px"> <div title="****" style="padding:0px;"> <div class="

【案例分享】使用ActiveReports报表工具,在.NET MVC模式下动态创建报表

提起报表,大家会觉得即熟悉又陌生,好像常常在工作中使用,又似乎无法准确描述报表.今天我们来一起了解一下什么是报表,报表的结构.构成元素,以及为什么需要报表. 什么是报表 简单的说:报表就是通过表格.图表等形式来动态显示数据,并为使用者提供浏览.打印.导出和分析的功能,可以用公式表示为: 报表 = 多样的布局 + 动态的数据 + 丰富的输出 报表通常包含以下组成部分: 报表首页:在报表的开始处,用来显示报表的标题.图形或说明性文字,每份报表只有一个报表首页. 页眉:用来显示报表中的字段名或对记录的

?C# MVC架构下的数据库操作-动软代码生成器

C# MVC架构下的数据库操作-动软代码生成器 介绍 动软代码生成器能够将数据库中表的数据生成Model层代码,并且封装了可供使用的BLL层和DAL层接口,供开发人员在Net平台上快速的操作数据库 使用方法 1.下载并安装动软代码生成器 2.连接数据库,并生成代码 3.将代码文件夹拷贝到项目中或添加为项目让主项目引用 4.修改DBhelper类,连接数据库 static String dbName = "ec"; static String userName = "ec&qu

Android:MVC模式(下)

在上一篇文章中,我们将 View 类单独出来并完成了设计和编写.这次我们将完成 Model 类,并通过 Controller 将两者连接起来,完成这个计算器程序. 模型(Model)就是程序中封装了数据,并定义了操作和处理这些数据的逻辑的对象.在计算器的例子中,就是处理输入的操作数和运算符,并计算返回结果.Let's Go (注意:示例中直接使用 double 类型来处理数据,但严格来说很多语言的浮点数计算都是不精确的) 一,设计模型的接口 在程序构建之初,我们首先考虑的应该是各模块间的封装和扩

【vim】正常模式下的一般操作

正常模式一般用于浏览文本,其实也就是通过键盘命令让光标在文本中跳来跳去,在任何模式下按一次或两次<Esc>会进入正常模式. 基本思想 vim对光标的定位操作非常精确和高效,这是它的一个非常好用的地方.但是,由于按键和按键组合太多太复杂,会让好多初学者望而却步. 其实,vim的光标定位是有规律的,就好像当初学五笔打字一样,看起来要记很多字根,其实键盘上字根的排列是非常有规律的,一旦清楚这些规律,学习就会心里有数很多. 对于vim来说,它的很多操作都遵循<数量><动作>&l

前端之Android入门(5) – MVC模式(下)

我们将 View 类单独出来并完成了设计和编写.这次我们将完成 Model 类,并通过 Controller 将两者连接起来,完成这个计算器程序. 模型(Model)就是程序中封装了数据,并定义了操作和处理这些数据的逻辑的对象.在计算器的例子中,就是处理输入的操作数和运算符,并计算返回结果.Let’s Go(注意:示例中直接使用 double 类型来处理数据,但严格来说很多语言的浮点数计算都是不精确的) 一,设计模型的接口 在程序构建之初,我们首先考虑的应该是各模块间的封装和扩展,设计好模块的接

Spring Mvc模式下Jquery Ajax 与后台交互操作

1.基本代码 1)后台控制器基本代码 @Controller @RequestMapping("/user") public class UserController { @Autowired private UserService userService;//服务 @ResponseBody @RequestMapping(value="/getUser/*访问路径自己设置*/", method = RequestMethod.POST) public Objec

JavaWeb学习过程 之MVC模式下的查询

近些天一直在学习javaweb 但总是时断时续,今天终于有时间,来学习一下MVC下的查询模式. 一.首先先了解一下 什么是mvc? MVC是Model-View-Controller的简称,即模型-视图-控制器.它是一种设计模式,它吧应用程序分成三个核心模块,模型,视图,控制器.他们各自处理自己的任务. 模型:是应用程序的主体部分,模型指的是业务模型. 一个模型可以为多个视图提供数据. 视图:是用户看到的并与之交互的界面. 可以向用户显示相关的数据,接受用户的输入,但是它不进行任何实际的业务处理