PHP连接数据库的类

来源:互联网 发布:mac图片查看器 编辑:程序博客网 时间:2024/05/17 23:17

新建一个名为:MySQL.class.php的文件,在文件里面定义一个名为:MySQL的类

代码如下:

<?php


class MySQL{
//成员属性
//用于存储mysqli_connect返回的mysqli对象
public $link;
public $fetchMode;


private static $obj = null;


//功能
//连接数据库
private function __construct($server,$username,$password,$dbname){
$this->link = mysqli_connect($server,$username,$password,$dbname);
}


static function getObj($server,$username,$password,$dbname){
if(is_null(self::$obj)){
self::$obj = new MySQL($server,$username,$password,$dbname);
}
return self::$obj;
}


//增
function insert($tbname,$data){
//将data数组中的键名称提取出来
//array_keys()函数返回包含数组中所有键名的一个新数组
$key = array_keys($data);
//将data数组中的键名称转换为字符串
//implode()函数返回由数组元素组合成的字符串 
$keys = implode(',',$key);


$values = implode('\',\'',$data);


$query = 'insert '.$tbname.'('.$keys.') value (\''.$values.'\')';


mysqli_query($this->link,$query);
//获取操作中的被影响行数
return mysqli_affected_rows($this->link);
}




//改
function update($tbname,$data,$where=null){
$sets = '';
foreach($data as $key=>$value){
//第一次拼键值对时,不加","
if($sets!=''){
$set.=',';
//$sets = password = 777,
}
$sets.=$key.'=\''.$value.'\'';
}
//将$data数组转化为$sets字符串
$query = 'update '.$tbname.' set '.$sets;


if(!is_null($where)){
$query.=' where '.$where;
}


mysqli_query($this->link,$query);
//获取被影响行数
return mysqli_affected_rows($this->link);
}




//删
function delete($tbname,$where=null){
//删除的方法体
//delete from user where
$query = 'delete from '.$tbname;
if(!is_null($where)){
//query=$query.' where '.$where;
$query.=' where '.$where;
}
mysqli_query($this->link,$query);
return mysqli_affected_rows($this->link);
}




//查
function setFetchMode($mode){
/*
MYSQLI_ASSOC
MYSQLI_NUM
$mode=MYSQLI_BOTH  //3
*/
if($mode!=MYSQLI_ASSOC&&$mode!=MYSQLI_NUM&&$mode!=MYSQLI_BOTH){
$mode = MYSQLI_ASSOC;
}
$this->fetchMode = $mode;
}
/*
一次性获取结果集中的全部数据
$config 是数组
$config = array('fields'=>'',
 'group'=>'',..
 );
*/
private function buildQuery($tbname,$config){
if(!isset($config['fields'])){
$config['fields'] = '*';
}
$query = 'select '.$config['fields'].' from '.$tbname;

if(isset($config['where'])){
$query.=' where '.$config['where'];
}


if(isset($config['group'])){
$query.=' group by '.$config['group'];
}


if(isset($config['order'])){
$query.=' order by '.$config['order'];
}


if(isset($config['limit'])){
$query.=' limit '.$config['limit'];
}
return $query;
}
/*
从结果集中获取全部的查询结果
*/
function fetchAll($tbname,$config=array()){
$query = $this->buildQuery($tbname,$config);


$result = mysqli_query($this->link,$query);
//获取结果集的行数
$rows = mysqli_num_rows($result);
if(!$rows){    //!0 = true
return false;
}
//从结果集中获取全部数据
return mysqli_fetch_all($result,$this->fetchMode);
}




/*
从结果集中获取一条的查询结果
*/
function fetch($tbname,$config=array()){
$query = $this->buildQuery($tbname,$config);


$result = mysqli_query($this->link,$query);
//获取结果集的行数
$rows = mysqli_num_rows($result);
if(!$rows){   //!0 = true
return false;
}
//获取一条的查询结果
return mysqli_fetch_array($result,$this->fetchMode);
}




//析构方法,释放mysqli_connect申请占用的内存空间
function __destruct(){
mysqli_close($this->link);
}
}

//可以根据自己的数据库名,用户名,密码,数据表名做测试
//测试成功

原创粉丝点击