失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > mysql数据库封装类_基于mysqli封装的数据库类

mysql数据库封装类_基于mysqli封装的数据库类

时间:2023-06-05 12:12:42

相关推荐

mysql数据库封装类_基于mysqli封装的数据库类

本文实例讲述了php封装的mysqli类。分享给大家供大家参考,具体如下:

类:

header('content-type:text/html;charset=utf-8');

/*

掌握满足单例模式的必要条件

(1)私有的构造方法-为了防止在类外使用new关键字实例化对象

(2)私有的成员属性-为了防止在类外引入这个存放对象的属性

(3)私有的克隆方法-为了防止在类外通过clone成生另一个对象

(4)公有的静态方法-为了让用户进行实例化对象的操作

*/

classConnectMysqli{

//私有的属性

privatestatic$dbcon=false;

private$host;

private$port;

private$user;

private$pass;

private$db;

private$charset;

private$link;

//私有的构造方法

privatefunction__construct($config=array()){

$this->host=$config['host']?$config['host']:'localhost';

$this->port=$config['port']?$config['port']:'3306';

$this->user=$config['user']?$config['user']:'root';

$this->pass=$config['pass']?$config['pass']:'root';

$this->db=$config['db']?$config['db']:'small2';

$this->charset=isset($arr['charset'])?$arr['charset']:'utf8';

//连接数据库

$this->db_connect();

//选择数据库

$this->db_usedb();

//设置字符集

$this->db_charset();

}

//连接数据库

privatefunctiondb_connect(){

$this->link=mysqli_connect($this->host.':'.$this->port,$this->user,$this->pass);

if(!$this->link){

echo"数据库连接失败

";

echo"错误编码".mysqli_errno($this->link)."

";

echo"错误信息".mysqli_error($this->link)."

";

exit;

}

}

//设置字符集

privatefunctiondb_charset(){

mysqli_query($this->link,"setnames{$this->charset}");

}

//选择数据库

privatefunctiondb_usedb(){

mysqli_query($this->link,"use{$this->db}");

}

//私有的克隆

privatefunction__clone(){

die('cloneisnotallowed');

}

//公用的静态方法

publicstaticfunctiongetIntance(){

if(self::$dbcon==false){

self::$dbcon=newself;

}

returnself::$dbcon;

}

//执行sql语句的方法

publicfunctionquery($sql){

$res=mysqli_query($this->link,$sql);

if(!$res){

echo"sql语句执行失败

";

echo"错误编码是".mysqli_errno($this->link)."

";

echo"错误信息是".mysqli_error($this->link)."

";

}

return$res;

}

//打印数据

publicfunctionp($arr){

echo"

";

print_r($arr);

echo"

";

}

publicfunctionv($arr){

echo"

";

var_dump($arr);

echo"

";

}

//获得最后一条记录id

publicfunctiongetInsertid(){

returnmysqli_insert_id($this->link);

}

/**

*查询某个字段

*@param

*@returnstringorint

*/

publicfunctiongetOne($sql){

$query=$this->query($sql);

returnmysqli_free_result($query);

}

//获取一行记录,returnarray一维数组

publicfunctiongetRow($sql,$type="assoc"){

$query=$this->query($sql);

if(!in_array($type,array("assoc",'array',"row"))){

die("mysqli_queryerror");

}

$funcname="mysqli_fetch_".$type;

return$funcname($query);

}

//获取一条记录,前置条件通过资源获取一条记录

publicfunctiongetFormSource($query,$type="assoc"){

if(!in_array($type,array("assoc","array","row")))

{

die("mysqli_queryerror");

}

$funcname="mysqli_fetch_".$type;

return$funcname($query);

}

//获取多条数据,二维数组

publicfunctiongetAll($sql){

$query=$this->query($sql);

$list=array();

while($r=$this->getFormSource($query)){

$list[]=$r;

}

return$list;

}

/**

*定义添加数据的方法

*@paramstring$table表名

*@paramstringorarray$data[数据]

*@returnint最新添加的id

*/

publicfunctioninsert($table,$data){

//遍历数组,得到每一个字段和字段的值

$key_str='';

$v_str='';

foreach($dataas$key=>$v){

if(empty($v)){

die("error");

}

//$key的值是每一个字段s一个字段所对应的值

$key_str.=$key.',';

$v_str.="'$v',";

}

$key_str=trim($key_str,',');

$v_str=trim($v_str,',');

//判断数据是否为空

$sql="insertinto$table($key_str)values($v_str)";

$this->query($sql);

//返回上一次增加操做产生ID值

return$this->getInsertid();

}

/*

*删除一条数据方法

*@param1$table,$where=array('id'=>'1')表名条件

*@return受影响的行数

*/

publicfunctiondeleteOne($table,$where){

if(is_array($where)){

foreach($whereas$key=>$val){

$condition=$key.'='.$val;

}

}else{

$condition=$where;

}

$sql="deletefrom$tablewhere$condition";

$this->query($sql);

//返回受影响的行数

returnmysqli_affected_rows($this->link);

}

/*

*删除多条数据方法

*@param1$table,$where表名条件

*@return受影响的行数

*/

publicfunctiondeleteAll($table,$where){

if(is_array($where)){

foreach($whereas$key=>$val){

if(is_array($val)){

$condition=$key.'in('.implode(',',$val).')';

}else{

$condition=$key.'='.$val;

}

}

}else{

$condition=$where;

}

$sql="deletefrom$tablewhere$condition";

$this->query($sql);

//返回受影响的行数

returnmysqli_affected_rows($this->link);

}

/**

*[修改操作description]

*@param[type]$table[表名]

*@param[type]$data[数据]

*@param[type]$where[条件]

*@return[type]

*/

publicfunctionupdate($table,$data,$where){

//遍历数组,得到每一个字段和字段的值

$str='';

foreach($dataas$key=>$v){

$str.="$key='$v',";

}

$str=rtrim($str,',');

//修改SQL语句

$sql="update$tableset$strwhere$where";

$this->query($sql);

//返回受影响的行数

returnmysqli_affected_rows($this->link);

}

}

?>

用法测试:

//mysqli测试

$db=ConnectMysqli::getIntance();

//var_dump($db);

/*$sql="select*fromacticle";

$list=$db->getAll($sql);

$db->p($list);*/

/*$sql="select*fromacticlewhereacticle_id=95";

$list=$db->getRow($sql);

$db->p($list);

*/

/*$sql="selecttitlefromacticle";

$list=$db->getOne($sql);

$db->p($list);不行*/

//$list=$db->insert("users",$_POST);

//$del=$db->deleteOne("users","id=29");

//$del=$db->deleteAll("users","idin(27,28)");

//$up=$db->update("users",$_POST,"id=27");

//print_R($list);

如果觉得《mysql数据库封装类_基于mysqli封装的数据库类》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。