功能强大的php数据库操作类的实现
2014-09-12 00:00
483 查看
摘要: 旨在打造纯php高效率的数据库操作类
本数据库操作类有两个文件构成,一个连接类,一个数据库操作基类。
此操作类的特点就是:1,自动接收参数,开发时无需手写接参 2,支持get,post两种
方式 3.支持批量删除,批量修改并且无需接收参数
*******个人原创,可用于实际项目中加快开发,转载请注明出处********
1.连接类:
2.操作基类
本数据库操作类有两个文件构成,一个连接类,一个数据库操作基类。
此操作类的特点就是:1,自动接收参数,开发时无需手写接参 2,支持get,post两种
方式 3.支持批量删除,批量修改并且无需接收参数
*******个人原创,可用于实际项目中加快开发,转载请注明出处********
1.连接类:
<?php class DBUtil{ private static $con; private $server='localhost'; private $username='root'; private $password=''; private $database_name='test'; private $new_link=false; public function __construct(){ $this->con=mysql_connect($this->server,$this->username,$this->password,$this->new_link); mysql_select_db($this->database_name,$this->con); mysql_query("set names utf8"); } /** * * *获取链接 * @return 资源类型或false */ function getCon(){ return $this->con; } /** * * * 关闭链接 * @return true或false */ function closCon(){ if($this->con){ mysql_close($this->con); } } } ?>
2.操作基类
<?php require_once 'DBUtil.php'; date_default_timezone_set('Asia/Shanghai'); class BaseDB{ public static $con; public function __construct(){ $db=new DBUtil(); $this->con=$db->getCon(); } /** * * * 添加 * 表单字段过滤处理参数:array('passwd'=>1,'addtime'=>2,'edittime'=>2); 1:表示md5加密此字段 2:表示默认时间 * @param $table要操作的数据表名 * 此方法可接受post过来的请求,如需要其他请求提交,修改$param=$_POST;即可 */ public function add($table,$array=null){ $fileds=''; $values=''; if($_POST){ $keys=array_keys($_POST); $fileds=join(',',$keys); $i=0; while($val=current($_POST)){ $key=key($_POST); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_POST)-1 || count($_POST)==1){ $values.="'$val'"; }else{ $values.="'$val',"; } $i++; next($_POST); } }else if($_GET){ $keys=array_keys($_GET); $fileds=join(',',$keys); $i=0; while($val=current($_GET)){ $key=key($_GET); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_GET)-1 || count($_GET)==1){ $values.="'$val'"; }else{ $values.="'$val',"; } $i++; next($_GET); } }else{ return false; } $sql="insert into $table($fileds) values($values)"; echo $sql; return mysql_query($sql,$this->con) or die(mysql_error()); } /** * * * 查询 * @return * @param $table 表名 * @param $filed(数组) 要查询的字段 * @param $condition(字符串) 查询的条件 */ public function select($table,$filed='*',$condition=''){ if($filed!='*' && $filed){ $filed=join(',',$filed); } $sql="select $filed from $table $condition"; $res=mysql_query($sql,$this->con) or die(mysql_error()); return $res; } /** * * * 删除(支持post,get提交两种方式,支持批量删除【此时页面书写规则 name="数据库字段[]",例如id[],name[]等等】支持自定义删除字段); * @param string $table * @param array $condition * @param $model 删除模式(1:单条删除模式,2:多条删除模式),默认单条删除模式 */ public function delete($table,$model=1){ $sql=''; if($model==1){ $condition=''; if($_POST){ while($val=current($_POST)){ $key=key($_POST); $condition="and $key='$val'"; next($_POST); } }else if($_GET){ while($val=current($_GET)){ $key=key($_GET); $condition="and $key='$val'"; next($_GET); } }else{ return false; } $sql="delete from $table where 1=1 $condition"; }else if($model==2){ if($_POST){ $key=array_keys($_POST); $pramarr=$_POST[$key[0]]; $condition=implode(",",$pramarr); $sql="delete from $table where ".$key[0]." in (".$condition.")"; }else if($_GET){ $key=array_keys($_GET); $pramarr=$_GET[$key[0]]; $condition=implode(",",$pramarr); $sql="delete from $table where ".$key[0]." in (".$condition.")"; }else{ return false; } } return mysql_query($sql,$this->con); } /** * * * 编辑 * @param string $table 表名 * @param string $id 数据库表中的标识符字段(即标识编辑的哪条数据),支持get.post两种方式提交 * 表单字段过滤处理参数:array('passwd'=>1,'addtime'=>2,'edittime'=>2); 1:表示md5加密此字段 2:表示默认时间 * 多条更新语句sql如下 * sql="update test * set name =case id * when 4 then 'name1' * when 5 then 'name2' * when 6 then 'name3' * when 7 then 'name4' * end, * passwd=case id * when 4 then 'psswd1' * when 5 then 'psswd2' * when 6 then 'psswd3' * when 7 then 'psswd4' * end * where id in(4,5,6,7)"; */ public function edit($table,$array=null,$id,$model=1){ if($model==1){ //单条模式 $fileds=''; $values=''; $position=''; if($_POST){ $position=$_POST["$id"]; unset($_POST["$id"]); //去除条件字段 $keys=array_keys($_POST); $fileds=join(',',$keys); $i=0; while($val=current($_POST)){ $key=key($_POST); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_POST)-1 || count($_POST)==1){ $values.=$key."='$val'"; }else{ $values.=$key."='$val',"; } $i++; next($_POST); } }else if($_GET){ $position=$_GET['$id']; $keys=array_keys($_GET); $fileds=join(',',$keys); $i=0; while($val=current($_GET)){ $key=key($_GET); if($array && $array[$key]){ switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } if($i==count($_GET)-1 || count($_GET)==1){ $values.=$key."='$val'"; }else{ $values.=$key."='$val',"; } $i++; next($_GET); } }else{ return false; } $sql="update $table set $values where $id='$position'"; return mysql_query($sql,$this->con); } if($model==2){ //多条模式 $sql=''; if($_POST){ $post=$_POST; //将$_POST赋值给新的变量,不影响修改主要依据标记字段删除对此$_POST的影响 unset($post[$id]); //清除修改主要依据标记字段 $sql.="update test set "; $i=0; //用于字段末位计数 while($val=current($post)){ $key=key($post); $ids=$_POST[$id]; $sql.="$key =case $id "; foreach($post[$key] as $key1=>$val){ if($array && $array[$key]){ //特殊字段处理 switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } $sql.="when '$ids[$key1]' then '$val' "; } if($i==count($post)-1){ $sql.='end '; }else{ $sql.='end,'; } next($post); $i++; } $inids=join(',',$ids); $sql.="where id in($inids)"; }else if($_GET){ $get=$_GET; //将$_POST赋值给新的变量,不影响修改主要依据标记字段删除对此$_POST的影响 unset($get[$id]); //清除修改主要依据标记字段 $sql.="update test set "; $i=0; //用于字段末位计数 while($val=current($get)){ $key=key($get); $ids=$_GET[$id]; $sql.="$key =case $id "; foreach($get[$key] as $key1=>$val){ if($array && $array[$key]){ //特殊字段处理 switch ($array[$key]){ case 1: $val=md5($val); break; case 2: $val=date('Y-m-d H:m:s'); break; default: break; } } $sql.="when '$ids[$key1]' then '$val' "; } if($i==count($get)-1){ $sql.='end '; }else{ $sql.='end,'; } next($get); $i++; } $inids=join(',',$ids); $sql.="where id in($inids)"; }else{ return false; } echo $sql; return mysql_query($sql,$this->con); } } function safe($s){ //安全过滤函数 if(get_magic_quotes_gpc()){ $s=stripslashes($s); } $s=mysql_real_escape_string($s); return $s; } } ?>
相关文章推荐
- 一款功能强大并且可以结合html5实现本地存储的数据库 – SQLite学习文档
- php实现可用于mysql,mssql,pg数据库操作类
- 使用PHP连接数据库实现留言板功能的实例讲解(推荐)
- 在Yii框架中使用PHPExcel扩展从数据库导出excel文件功能的实现
- 一个功能强大而齐全的数据库操作类
- PHP案例:实现数据库增删改查功能
- PHP实现的redis主从数据库状态检测功能示例
- php实现可用于mysql,mssql,pg数据库操作类
- PHP实现的文件操作类及文件下载功能示例
- php mysql数据库操作类,功能很强大
- 一款功能强大并且可以结合html5实现本地存储的数据库 – SQLite学习文档
- php实现比较全的数据库操作类
- C#实现功能强大的中国农历日历操作类
- php实现比较全的数据库操作类
- 一款功能强大并且可以结合html5实现本地存储的数据库 – SQLite学习文档
- php基于PDO实现功能强大的MYSQL封装类实例
- PHP实现的一个简单的数据库操作类(修改版)
- 安卓服务端开发(1) 安卓结合PHP实现连接数据库验证登录功能(附全部代码)
- PHP实现数据库的增删查改功能及完整代码
- 通过一个简单的数据库操作类了解PHP链式操作的实现