使用过ThinkPHP框架的同学可能会对于其中数据库模型操作特别有好感,ThinkPHP提供了数据库操作的简单的操作,对于连接数据库,数据库的增删改查等数据操作都非常的nice,同时支持连贯操作,对于那些不习惯写sql语句的同学真是大大的便利。(注:sql还是很重要的,不要因为用了框架就把原先的忘了)。
而在笔者使用php操作redis实现后台任务的过程中,也想要借助这种便利,但无奈redis操作单独的类,直接访问其中的controller文件的话,总是会提示M方法失败,导致此模型方法不能使用。万般无奈之下,只能自己来实现一下了。
借助PHP的mysqli相关函数,进行MySQL数据库操作类的实现。此程序中提供数据库的操作包括:数据库的连接,数据库的选择,数据库用户的选择,相应数据库中所有数据表名的查看;数据表的操作包括:相应的数据表中字段全部属性的查看,数据表的增删改查操作,数据表查询、插入的连贯操作等
<?php
/**
* Author: helen
* CreateTime: 2016/4/12 20:14
* description: 数据库操作类(仅对接MySQL数据库,主要利用MySQLi函数)
*/
class Database{
//MySQL主机地址
private $_host;
//MySQL用户名
private $_user;
//MySQL用户密码
private $_password;
//指定数据库名称
private $_database;
//MySQL数据库端口号
private $_port;
private $_socket;
//当前数据库对象
private $_dbObj;
//数据库表
private $_table;
//数据库表对象
private $_tableObj;
// 最近错误信息
protected $error = '';
// 数据信息
protected $data = array();
// 查询表达式参数
protected $options = array();
protected $_validate = array(); // 自动验证定义
protected $_auto = array(); // 自动完成定义
protected $_map = array(); // 字段映射定义
protected $_scope = array(); // 命名范围定义
// 链操作方法列表
protected $methods = array('strict','order','alias','having','group','lock','distinct','auto','filter','validate','result','token','index','force');
/**
* Database类初始化函数
* 取得DB类的实例对象 字段检查
* @access public
* @param string $host MySQL数据库主机名
* @param string $user MySQL数据库用户名
* @param string $password MySQL数据库密码
* @param string $database 指定操作的数据库
* @return mixed 数据库连接信息、错误信息
*/
public function __construct($host,$user,$passowrd,$database,$port=3306){
$this->_initialize();
if(!isset($host)||!isset($user)||!isset($passowrd)||!isset($database)){
return false;
}else{
$this->_host = $host;
$this->_user = $user;
$this->_password = $passowrd;
$this->_database = $database;
$this->_port = $port;
$_dbObj = new mysqli($host,$user,$passowrd,$database,$port);
if($_dbObj->connect_errno){
$this->error = $_dbObj->connect_error;
return false;
}else{
$this->_dbObj = $_dbObj;
return $this;
}
}
}
/**
* 错误信息函数
* 返回数据库操作过程中最后一次执行时的错误信息
* @access public
* @return mixed 数据库连接错误信息(正常返回'')
*/
public function error(){
return $this->error;
}
// 回调方法 初始化模型
protected function _initialize() {
}
/**
* 设置数据对象的值
* @access public
* @param string $name 名称
* @param mixed $value 值
* @return void
*/
public function __set($name,$value) {
// 设置数据对象属性
$this->data[$name] = $value;
}
/**
* 获取数据对象的值
* @access public
* @param string $name 名称
* @return mixed
*/
public function __get($name) {
return isset($this->data[$name])?$this->data[$name]:null;
}
/**
* 检测数据对象的值
* @access public
* @param string $name 名称
* @return boolean
*/
public function __isset($name) {
return isset($this->data[$name]);
}
/**
* 销毁数据对象的值
* @access public
* @param string $name 名称
* @return void
*/
public function __unset($name) {
unset($this->data[$name]);
}
/**
* 利用__call方法实现一些特殊的方法(对于调用类中不存在方法的解决方案)
* @access public
* @param string
版权声明:本文为helencoder原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。