用户操作
[即时聊天] [发私信] [加为好友]
徐兴ID:striker_un
2713次访问,排名2万外,好友7人,关注者12人。
striker_un的文章
原创 8 篇
翻译 0 篇
转载 1 篇
评论 2 篇
最近评论
striker_un:常用查询字符串处理
function chk_query($word) {
global $skip_ary,$split_ary,$trans_ary;
$res = urldecode($word);
$res .= ' '.strtoupper($res);
$res = strtr($res,$split_ary);
DOLOY:16 yellow card ,4 red
文章分类
收藏
    相册
    徐兴
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 俺用的数据库类,发布出来。PHP mysql收藏

    新一篇: 关于js处理的一些公用代码收集.(代码+demo) | 旧一篇: php 字符处理

    <?
    /*
    数据库内详细介绍:
    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 onchange="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 onkeydown='if(window.event.keyCode==13) pagejump();'> 页 <img src=".gd('user')."images/go1.gif align=absmiddle onclick='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 onkeydown='if(window.event.keyCode==13) pagejump();' style='border:1px solid #424242; height:16px;'> 页 <img src=".gd('magzine')."images/go.gif align=absmiddle onclick='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');

     

    ?>

     

    发表于 @ 2007年05月15日 16:26:00|评论(loading...)|编辑

    新一篇: 关于js处理的一些公用代码收集.(代码+demo) | 旧一篇: php 字符处理

    评论:没有评论。

    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © striker_un