俺用的数据库类,发布出来。PHP mysql

<?
/*
数据库内详细介绍:
1 属性
 $dbtype='mysql';  //数据库类型  | $user='';  //用户名  | $pass=''; //密码 |  var $host=''; 主机|  $database='';       //库名
  $table = '';     //表名 |    $handle;     //数据库指针| $rs = array();查询结果集数组  | $last_rs  上次操作记录集名
  $rows_num=0;   总记录数 |    $page=0;     //当前页数  | $pages_num=0;       //总页数  | $rows_per_page=0;  每页记录行数
   $rows_offset=0;     //分页起始偏移 $params='';          //链接附加参数 $show_page_num=0;   //分页样式2时显示页数(最好为单数)
 $mod = 1;          //模式。主要用于数组与数据库关联的时num 型,还是$key=>$val型;
 
 $func_ary  得到记录集的类型。
 */
 
// 方法  1 db()    构造函数。
// 方法  2 conn()  数据库服务连接。
// 方法  3 close() 断开数据库连接
// 方法  4 setdb($database='newmambo') 打开库
// 方法  5 query($sql) 查询sql语句
// 方法  6 insid()   返回最后插入ID
// 方法  7 affrow() 返回上次操作影响行数
// 方法  8 err()   返回出错信息数组array(error no,error text)
// 方法  9 rs($sql='',$rs_name='')  返回结果集 
// 方法  10 rn($sql='',$type='num',$rs_name='',$num=1)  返回数值索引数组
// 方法  11 val($sql) 单值快速返回
// 方法  12 num($sql='',$rs_name='rs') 返回记录集行数
// 方法  13 clean($rs_name) 清除结果集缓存
// 方法  14  reset ($rs_name) 记录集指针回零
// 方法  15 pnum($page,$rows_num,$rows_per_page=20,$offset=0) 设置分页参数
// 方法  16 page($sql,$rs_name='')  查询分页
// 方法  17  nav($style='nav1',$show_page_num=15)  翻页控制html代码输出  (目前有四种样式,可进一步扩展)
// 方法  18 卡param($param,$filter='') 链接参数转换


// 方法  19  insertbyArray($dataArray,$mod = 1)
insertbyArray /
  将数组内的值,插入到数据库中去
/*
 第一个参数为插入数据,第二个参数为插入模式。
 当模式为1 时,数组为索引数组,是将数据库的字段依次读出来,做为插入条件。
 当模式为2 时,数组为键值索引。
*/

 

 

// 方法  20 updatebyArray($dataArray,$mod=1,$cond="")
updatebyArray /
根据数组的值,来更新数据
/*
 第一个参数为插入数据,第二个参数为插入模式。
 当模式为1 时,数组为索引数组,是将数据库的字段依次读出来,做为更新条件。
 当模式为2 时,数组为键值索引。条件直接从数组来生成出来。
 
 并添加查询条件,强制庙宇为没有查询条件时不进行数据更换操作。
*/


  
// 方法  20   del($cond='')
del byArray /
根据条件生成删除的值。
///  并添加查询条件,强制庙宇为没有查询条件时不进行数据更换操作。


class db {
 var $dbtype='mysql';    //数据库类型
 var $user='';           //用户名
 var $pass='';           //密码
 var $host='';           //地址
 var $database='';       //库名
 var $table = '';        //表名。
 var $handle;            //数据库句柄
 var $rs = array();      //查询结果集数组
 var $last_rs = '';      //上次操作记录集名
 var $rows_num=0;        //总记录数
 var $page=0;            //当前页数
 var $pages_num=0;       //总页数
 var $rows_per_page=0;   //每页记录行数
 var $rows_offset=0;     //分页起始偏移
 var $params='';          //链接附加参数
 var $show_page_num=0;   //分页样式2时显示页数(最好为单数)
 var $mod = 1;          //模式。
 

 var $func_ary = array(  //函数数组
  'farray'       => 'mysql_fetch_array',
  'fnum'         => 'mysql_fetch_row',
  'ffield'       => 'mysql_fetch_assoc',
  'fobject'      => 'mysql_fetch_object',
 );

 /* 构造函数*/
 function db($type='mysql') {
  if($type!='') $this->dbtype = $type;
  if(!$this->func_ary[$this->dbtype]) {
   return false;
  }else {
   return true;
  }
 }

 /* 数据库服务连接 */
 function conn($host='61.234.152.100',$user='root',$pass='admin') {
  if(gettype($host)=='resource') {
   $this->handle = $host;
  }else {
   if($host!='') $this->host = $host;
   if($user!='') $this->user = $user;
   if($pass!='') $this->pass = $pass;
   $this->handle = mysql_connect($this->host,$this->user,$this->pass,false,MYSQL_CLIENT_COMPRESS) or die("数据库无法连接,请稍候……");
   return $this->handle;
  }
 }

 /* 断开数据库连接 */
 function close() {
  @mysql_close($this->handle);
 }

 /* 打开库 */
 function setdb($database='newmambo') {
  if($database!='') $this->database= $database;
  @mysql_select_db($this->database,$this->handle);
 }

 /* 查询sql语句 */                   /*?*/
 function query($sql) {
  if(is_array($sql)) {
   for($i=0; $i<sizeof($sql); $i++) {
    $tmp = @mysql_query($sql[$i],$this->handle);
   }
   return $tmp;
  }else {
   return @mysql_query($sql,$this->handle);
  }
 }

 /* 返回最后插入ID */
 function insid() {
  return @mysql_insert_id($this->handle);
 }

 /* 返回上次操作影响行数 */
 function affrow() {
  return @mysql_affected_rows($this->handle);
 }

 /* 返回出错信息数组array(error no,error text) */
 function err() {
  return array(@mysql_errno(), @mysql_error($this->handle));
 }

 /* 返回结果集 */
 function rs($sql='',$rs_name='') {
  if($rs_name==''&&$this->last_rs=='') {
   $rs_name='rs';
  }elseif($rs_name=='') {
   $rs_name = $this->last_rs;
  }
  $sql_tmp = is_array($sql)?$sql[sizeof($sql)]:$sql;
  if($sql_tmp!=''&&$this->result[$rs_name][0]!=$sql){
   $tmp = $this->query($sql);
   $this->result[$rs_name] = array($sql_tmp,$tmp);
   $this->last_rs = $rs_name;
  }
  return $this->result[$rs_name][1];
 }

 /* 返回数值索引数组 */
 function rn($sql='',$type='num',$rs_name='',$num=1) {
  if(!$type) $type='num';
  if(!in_array($type,array('num','field','array','object'))) return false;
  if($num==1) {
   return @$this->func_ary['f'.$type]($this->rs($sql,$rs_name));
  }elseif($num=='all') {
   while($tmp[] = @$this->func_ary['f'.$type]($this->rs($sql,$rs_name))) {
   }
  }elseif(is_int($num)) {
   for($i=0; $i<$num; $i++) {
    $tmp1 = @$this->func_ary['f'.$type]($this->rs($sql,$rs_name));
    if($tmp1===false) {
     break;
    }else {
     $tmp[] = $tmp1;
    }
   }
  }else {
   return false;
  }
  return $tmp;
 }

 /* 单值快速返回 */
 function val($sql) {
  $tmp = mysql_fetch_row($this->query($sql));
  if(is_null($tmp)) {
   echo($sql);
   echo"<pre>";
   print_r($this->err());
   echo"</pre>";
  }
  return $tmp[0];
 }

 /* 返回记录集行数 */
 function num($sql='',$rs_name='rs') {
  return @mysql_num_rows($this->rs($sql,$rs_name));
 }

 /* 清除结果集缓存 */
 function clean($rs_name) {
  if(is_array($rs_name)) {
   foreach($rs_name as $val) {
    @mysql_free_result($this->result[$rs_name][1]);
    unset($this->result[$val]);
   }
  }else {
   @mysql_free_result($this->result[$rs_name][1]);
   unset($this->result[$rs_name]);
  }
 }

 /* 记录集指针回零 */
 function reset ($rs_name) {
  if(is_array($rs_name)) {
   foreach($rs_name as $val) {
    @mysql_data_seek($this->result[$val][1],0);
   }
  }else {
   @mysql_data_seek($this->result[$rs_name][1],0);
  }
 }

 /* 设置分页参数 */
 function pnum($page,$rows_num,$rows_per_page=20,$offset=0) {
  if($rows_num)      $this->rows_num      = $rows_num;
  if($rows_per_page) $this->rows_per_page = $rows_per_page;
  if($offset)        $this->offset        = $offset;
  if(!$page)         $page =1;
  $this->page = $page;
  $this->pages_num = ceil(($this->rows_num-$this->offset)/$this->rows_per_page);
  Return $this->pages_num;
 }

 /* 查询分页 */
 function page($sql,$rs_name='') {
  switch($this->dbtype) {
   case 'mysql':
   
    $sql = $sql." limit ".(($this->page-1)*$this->rows_per_page+$this->offset).", ".$this->rows_per_page;
   
    return $this->rs($sql,$rs_name);
    break;
  }
 }

 /* 翻页控制html代码输出 */
 function nav($style='nav1',$show_page_num=15) {

  switch($style) {
   /* 连接翻页1:  首页 | 上页 | 下页 | 末页 */
   case 'nav1':
   
    if ($this->page > 1) {
     $nav .= '<a href="?page=1&'.$this->params.'" class="page_linked">首页</a> | ';
     $nav .= '<a href="?page='.($this->page-1).'&'.$this->params.'"  class="page_linked">上页</a> | ';
    }else {
     $nav .= '<span class="page_unlink">首页</span> | ';
     $nav .= '<span class="page_unlink">上页</span> | ';
    }
    if ($this->page < $this->pages_num) {
     $nav .= '<a href="?page='.($this->page+1).'&'.$this->params.'" class="page_linked">下页</a> | ';
     $nav .= '<a href="?page='.$this->pages_num.'&'.$this->params.'" class="page_linked">末页</a>';
    }else {
     $nav .= '<span class="page_unlink">下页</span> | ';
     $nav .= '<span class="page_unlink">末页</span>';
    }
    break;
   /* 连接翻页1:  第 1 2 3 4 5 6 7 8 9 页*/
   case 'nav2':
    for($i=1; $i<=$this->pages_num; $i++) {
     if($i == $this->page) {
      $nav .= " <font style='font-size:12pt' face='Verdana'><b>$i</b></font> ";
     }else {
      $nav .= " <a href=?page=$i&".$this->params."><font style='font-size:9pt;' face='Verdana'>$i</font></a> ";
     }
    }
    $nav = "第 $nav 页";
    break;
   /* 连接翻页3:  << 第一页 ... << 上一页 6 7 8 9 10 11 12 13 14 15 16 17 18 下一页 >> ... 最后页 >> */
   case 'nav3':
    if($show_page_num) $this->show_page_num = $show_page_num;
    $page          = $this->page;
    $show_page_num = $this->show_page_num;
    $pages_num     = $this->pages_num;
    $param         = $this->params;
    $mid = ceil(($show_page_num+1)/2); 
    $nav = '';
    if($page<=$mid ) {
     $begin = 1;
    }else if($page > $pages_num-$mid) {
     $begin = $pages_num-$show_page_num+1;
    }else {
     $begin = $page-$mid+1;
    }
    if($begin<0) $begin = 1;
    if($begin!=1) $nav .= " <a href='?$param' title='第1页'>&laquo; 第一页</a> ... ";
    if($page>1)   $nav .= " <a href='?$param&page=".($page-1)."' title='第".($page-1)."页'>&laquo; 上一页</a> ";
    $end = ($begin+$show_page_num>$pages_num)?$pages_num+1:$begin+$show_page_num;
    for($i=$begin; $i<$end; $i++) {
     $nav .=($page!=$i)?" <a href='?$param&page=$i' title='第{$i}页'>$i</a> ":" <span style='font-size:12pt;'>$i</span> ";
    }
    if($page<$pages_num)   $nav .= " <a href='?$param&page=".($page+1)."' title='第".($page+1)."页'>下一页 &raquo;</a> ";
    if($end!=$pages_num+1) $nav .= " ... <a href='?$param&page=$pages_num' title='第{$pages_num}页'>最后页 &raquo;</a> ";
    break;
   /* 玩转手机所用下拉 */
   case 'nav4':
    if($show_page_num) $this->show_page_num = $show_page_num;
    $page          = $this->page;
    $show_page_num = $this->show_page_num;
    $pages_num     = $this->pages_num;
    $param         = $this->params;
    if (!$pages_num) $pages_num =1;
    $nav = "<a href='?$param' title='第1页'><font face=webdings>9</font></a> ";
   
   if ($page>1) {
    $nav .="<a href='?$param&page=".($page-1)."' title='第".($page-1)."页'><font face=webdings>7</font></a> ";
   }else {
    $nav .= "<font face=webdings>7</font> ";
   }
   if ($page<=2||$pages_num<$show_page_num) {
    $begin=1;
   } elseif ($page>$pages_num-$show_page_num+2) {
    $begin = $pages_num-$show_page_num+1;
   }else {
    $begin = $page-2;
   }
   if ($pages_num<$show_page_num) {
    $end =$pages_num;
   }else {
    $end = $begin+$show_page_num-1;
   }
   /*if ($pages_num<$show_page_num) {
    $end = $pages_num;
   }elseif ($page<=$show_page_num){
    $end = $show_page_num ;
   }elseif(($page<=$pages_num&&$page+$show_page_num-2-1>$pages_num)) {
    $end = $pages_num;
   }elseif ($page>2) {
    $end = $page+($show_page_num-2-1);
   }*/
   //$nav.="[ ";
   for ($i=$begin;$i<=$end;$i++) {
    $nav .=($page!=$i)?"<a href='?$param&page=$i' title='第{$i}页' class=nav>&nbsp;$i&nbsp;</a> ":"<font color='#000000'><b>&nbsp;<U>$i</U>&nbsp;</b></font> ";
   }
   //$nav .=" ] ";
   if ($page<$pages_num) {
    $nav .="<a href='?$param&page=".($page+1)."' title='第".($page+1)."页'><font face=webdings>8</font></a> ";
   }else {
    $nav .= "<font face=webdings>8</font> ";
   }
    $nav .="<a href='?page=$pages_num&$param' title='尾页'><font face=webdings>:</font></a>&nbsp;&nbsp;<b>共<font color='#74A2DE'>".$pages_num."</font>页</b>";
    break;
   /*下拉框直接跳转 */
   case 'listjump':
    $nav = '
第 <select οnchange="location.href=/'?'.$this->params.'&page=/'+this.value;">
<script language="JavaScript/">
<!--
 for(i=1; i<='.$this->pages_num.'; i++) {
  document.write("<option value="+i+(i=='.$this->page.'?" selected":"")+">"+i+"</option>");
 }
//-->
</script>
</select> 页';
    break;
   case 'inputjump':
    return "<script language='javascript'>function pagejump(){if (document.all.pagejmp.value == ''|| document.all.pagejmp.value < 0 ) {document.all.pagejmp.focus();alert('请输入跳转页码!');return false;}else{this.location.href = '?page='+document.all.pagejmp.value+'&".$this->params."'; target = '_self';}}</script>  转到第 <input name=pagejmp size=2 οnkeydοwn='if(window.event.keyCode==13) pagejump();'> 页 <img src=".gd('user')."images/go1.gif align=absmiddle οnclick='pagejump();' style='cursor:hand;'>";
   break;
   case 'imagejump':
    return "<script language='javascript'>function pagejump(){if (document.all.pagejmp.value == ''|| document.all.pagejmp.value < 0 ) {document.all.pagejmp.focus();alert('请输入跳转页码!');return false;}else{this.location.href = '?page='+document.all.pagejmp.value+'&".$this->params."'; target = '_self';}}</script>  转到第 <input name=pagejmp size=4 οnkeydοwn='if(window.event.keyCode==13) pagejump();' style='border:1px solid #424242; height:16px;'> 页 <img src=".gd('magzine')."images/go.gif align=absmiddle οnclick='pagejump();' style='cursor:hand;' width=25 height=17>";
   break;
  default:
   $nav = '';
  }
  return $nav;
 }

 function xmlnav(&$xml,$type='nav1') {
  switch($type) {
   case 'nav1':
    if ($this->page > 1) {
     $xml->setAttrib('first','yes');
    }else {
     $xml->setAttrib('first','no');
    }
    if ($this->page < $this->pages_num) {
     $xml->setAttrib('last','yes');
    }else {
     $xml->setAttrib('last','no');
    }
    $xml->addElement('previous',$this->page-1);
    $xml->addElement('next',$this->page+1);
    break;
  }
 }
 
 

 /* 当前页/总页数 输出 */
 function pos($style=1){
  switch($style) {
   case 1:
    return "页次:".$this->page.'/'.$this->pages_num."页";
    break;
   case 2:
    return "(".$this->page.'/'.$this->pages_num." 页)";
    break;
   default:
    return false;
  }
 }

 /* 链接参数转换 */
 function param($param,$filter='') {
  if(is_array($filter)) {
   $filter[] = 'page';
  }else {
   $filter = array($filter,'page');
  }
  $filter = array_unique($filter);
  foreach($param as $key=>$val) {
   if(!in_array($key,$filter)) {
    if(is_array($val)) {
     foreach($val as $key1=>$val1) {
      $prm .= urlencode($key.'['.$key1.']').'='.urlencode($val1).'&';
     }
    }else {
     $prm .= urlencode($key).'='.urlencode($val).'&';
    }
   }
  }
  $this->params = $prm;
  return $prm;
 }
 
 
 
 
 
///
///以下内容为整合atop 的数据库类                  

insertbyArray /
  将数组内的值,插入到数据库中去
/*
 第一个参数为插入数据,第二个参数为插入模式。
 当模式为1 时,数组为索引数组,是将数据库的字段依次读出来,做为插入条件。
 当模式为2 时,数组为键值索引。
*/


function insertbyArray($dataArray,$mod = 1)
{
 
  $this->mod = $mod;
  echo $this->mod;
 switch ($this->mod)
  {
   case(1):
  
   $fields = mysql_list_fields($this->database, $this->table);
   $len = mysql_num_fields($fields);
   $sql = "insert into  $this->table(";
   
   for($j = 0;$j<$len;$j++)
   {
     $fields_name[$j] = mysql_field_name($fields, $j);
     $sql .= ($j == $len-1) ?$fields_name[$j].") values(": $fields_name[$j].",";
   }
   
   for($j = 0;$j <$len;$j++)
   {
    $sql .= ($j == $len-1) ?"'$dataArray[$j]' )": "'$dataArray[$j]',";
   }
 break;
 
  case(2):
   $cond1 = array();
   $cond2 =  array();
   foreach($dataArray as $key => $val)
  {
   $cond1[]= $key;
   $cond2[]= "'$val'";
  }
  
  $cond1_str = implode(",",$cond1);
  $cond2_str = implode(",",$cond2);
  $sql = "insert into $this->table ($cond1_str) value( $cond2_str)";
  
  break;
  }
       // $this->query($sql);
   
    echo $sql."<hr>";
    echo "测试阶段,暂未开通执行。正确后请联系db类管理员:";
   
}


updatebyArray /
根据数组的值,来更新数据
/*
 第一个参数为插入数据,第二个参数为插入模式。
 当模式为1 时,数组为索引数组,是将数据库的字段依次读出来,做为更新条件。
 当模式为2 时,数组为键值索引。条件直接从数组来生成出来。
*/

  function updatebyArray($dataArray,$mod=1,$cond="")
  {
   $this->mod = $mod;
  
   switch ($this->mod)
    {
     case(1):
     $fields = mysql_list_fields($this->database, $this->table);
      $len = mysql_num_fields($fields);
      $sql = "update $this->table set ";
      
       for($j = 0;$j<$len;$j++)
       {
         $fields_name[$j] = mysql_field_name($fields, $j);
         $sql .= ($j == $len-1) ?$fields_name[$j]."= '$dataArray[$j]'": $fields_name[$j]."='".$dataArray[$j]."',";
       }
      break;
    case(2):
      $cond_me = array();
      $sql = "update $this->table set";
      foreach($dataArray as $key => $val)
      {
       $cond_me[] =  " $key = '$val'";
      }
      $cond_str = implode(",",$cond_me);
      $sql .= $cond_str;
      break;
   }
    if($cond)
   {
    $sql .= " where $cond";
   }
   else
   {
    echo "本类不支持无条件更新<FONT COLOR ='RED'> all right reserved by xuxing</FONT>";
    exit();
   } 
   echo $sql."<hr/>";
   echo "测试阶段,暂未开通执行。正确后请联系db类管理员:";
  }


del byArray /
根据条件生成删除的值。
  function del($cond='')
  {
    if($cond)
    $sql = "delete from $this->table where $cond";
    else
    {
     echo "本类不支持无条件删除<FONT COLOR ='RED'> all right reserved by xuxing</FONT>";
     exit();
    }
    
    echo $sql."<hr/>";
       echo "测试阶段,暂未开通执行。正确后请联系db类管理员:";
  }
 
}

function db_init() {
  global $db;
  $db = new db();
  $db->conn();
  $db->setdb();
}


db_init();
$arr1 = array ("0"=>"23","1"=>"xuxing","2"=>86,"3"=>$_SERVER['REMOTE_ADDR'],"4"=>"回复","5"=>date("Y-m-d H:i:s"));
$arr2 = array("username"=>"xuxing","cid"=>86,"ip"=>$_SERVER['REMOTE_ADDR'],"content"=>"回复内容","createtime"=>date("Y-m-d H:i:s"));

$db->mod = 2;
$db->table = "comment";
$sql = "select * from comment where id >2";
$ra = $db->rn($sql,'field');

 

?>

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值