您的位置:首页 > 编程语言 > PHP开发

功能强大的php数据库操作类的实现

2014-09-12 00:00 483 查看
摘要: 旨在打造纯php高效率的数据库操作类

本数据库操作类有两个文件构成,一个连接类,一个数据库操作基类。

此操作类的特点就是: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;
}

}

?>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息