php mysql数据库操作类

发布时间:2020-10-15编辑:脚本学堂
不错的一个php mysql数据库类,基于php5的面向对象,OOP的良好应用,有需要的朋友,可以参考学习下。
代码如下。
<?php  
/** 
* 数据库操作类 
* www.jb200.com
*/  
class MyDB {  
       private $db_host;        //数据库主机名  
        private $db_user;        //数据库用户名  
        private $db_pwd;         //数据库密码  
        private $db_database;    //数据库名  
        private $conn;           //连接标识  
        private $result;         //执行query命令的结果资源标识  
        private $row;            //返回的条目数  
        private $sql;            //sql执行语句  
        private $coding;         //数据库编码  
        private $bulletin=true;       // 是否开启错误记录  
        private $show_error=false;    //测试阶段,显示所有错误,具有安全隐患,默认关闭  
        private $is_error=false;      //发现错误是否立即终止,默认true,建议不启用,因为当有问题时用户什么也看不到是很苦恼的  
        
 //构造函数  
         function __construct($db_host,$db_user,$db_pwd,$db_database,$conn,$doding){  
               $this->db_host=$db_host;  
               $this->db_user=$db_user;  
               $this->db_pwd=$db_pwd;  
               $this->db_database=$db_database;  
               $this->conn=$conn;  
               $this->coding=$coding;  
               $this->connect();  
              
         }  
         //数据库连接  
         public  function connect(){  
            if($this->conn=="pconn"){  
                //永久连接  
                $this->conn=mysql_pconnect($this->db_host,$this->db_user,$this->db_pwd);  
            }else{  
                //即使连接  
                $this->conn=mysql_connect($this->db_host,$this->db_user,$this->db_pwd);  
            }  
            if(!mysql_select_db($this->db_database,$this->conn)){  
                if($this->show_error){  
                    $this->show_error("数据库不可用:",$this->db_database);  
                }  
            }  
         }  
           
         //数据库执行语句,可执行查询添加修改删除等任何sql语句  
         public  function query($sql){  
            if($sql==""){  
                $this->show_error("sql语句错误:","sql语句为空");  
            }  
            $this->sql=$sql;  
            $result=mysql_query($this->sql,$this->conn);  
            if(!$result){  
                if($this->show_error){  
                    $this->show_error("错误sql语句:",$this->sql);  
                }  
            }else {  
                $this->result;  
            }  
            return  $result;  
         }  
         //创建添加新的数据库  
         public  function create_database($database_name){  
             $database=$database_name;  
             $sqlDatabase='create database'.$database;  
             $this->query($sqlDatabase);  
         }  
         //查询服务器所有数据库  
         //将系统数据库与用户分开,更直观的显示  
         public function show_database(){  
            $this->query("show databases");  
            echo "现在有的数据库:".$alinuxjishu/9952.html target=_blank class=infotextkey>mount=$this->db_num_rows($rs);  
            echo "<br>";  
            $i=1;  
            while ($row=$this->fetch_array($rs)){  
                echo "$i $row[Database]";  
                echo "<br>";  
                $i++;  
            }  
         }  
         //以数组的形式返回主机中所有的数据库名  
         public function databases(){  
            $rsPtr=mysql_list_dbs($this->conn);  
            $i=0;  
            $cnt=mysql_num_rows($rsPtr);  
            while ($i<$cnt){  
                $rs[]=mysql_db_name($rsPtr,$i);  
                $i++;  
            }  
            return $rs;  
         }  
         //查询数据库下所有的表  
         public  function show_tables($database_name){  
            $this->query("show tables");  
            echo "现有数据库:".$amount=$this->db_num_rows($rs);  
            echo  "<br>";  
            $i=1;  
            while ($row=$this->fetch_array($rs)){  
                $columnName="Tables_in_".$database_name;  
                echo "$i $row[$columnName]";  
                echo "<br>";  
                $i++;  
            }  
         }  
         // 取得结果集  
         public function fetch_array($resultt=""){  
            if($resultt!=""){  
                return mysql_fetch_array($resultt);  
            }else {  
                return mysql_fetch_array($this->result);  
            }  
         }  
         //取得结果数  $row['content']   
         public  function mysql_result_li(){  
            return mysql_result($str);  
         }  
         //获取关联数组  $row['字段名']  
         public  function fetch_assoc(){  
            return mysql_fetch_assoc($this->result);  
         }  
         //获取数字索引数组 $row[0] $row[1] $row[2]   
         public  function fetch_row(){  
            return mysql_fetch_row($this->result);  
         }  
         //获取对象数组,使用$row->content  
         public function fetch_Object(){  
            return mysql_fetch_object($this->result);  
         }  
         //简化查询select  
         public function findall($table){  
            $this->query("select* from $table");  
         }  
         //简化查询select  
         public  function select($table,$columnName="*",$condition='',$debug=''){  
            $condition=$condition?'where'.$condition:null;  
            if($debug){  
                echo "select $columnName from $table $condition";  
            }else{  
                $this->query("select $columnName  from $table $condition");  
            }  
         }  
           
         //简化删除del  
         public function delete($table,$condition,$url=''){  
            if($this->query("delete from $table where $condition")){  
                if(!emptyempty($url)){  
                    $this->Get_admin_msg($url,'删除成功');  
                }  
            }  
         }  
         //简化插入insert   
         public  function insert($table,$columnName,$value,$url=''){  
              if($this->query("insert into $table ($columnName) values ($value)")){  
                if(!emptyempty($url)){  
                    $this->Get_admin_msg($url,'添加成功');  
                }  
              }  
              
         }  
         //简化更新update  
         public function update($table,$mod_content,$condition,$url=''){  
            if($this->query("update $table set $mod_content where $condition")){  
                if(!emptyempty($url)){  
                    $this->Get_admin_msg($url);  
                }  
            }  
         }  
         //取得上一步insert操作的id  
         public  function insert_id(){  
            return  mysql_insert_id();  
         }  
         //指向确定的一条数据记录  
         public  function db_data_seek($id){  
            if($id>0){  
                $id=$id-1;  
            }  
            if(!@mysql_data_seek($this->result,$id)){  
                $this->show_error("sql语句有误:","指定的数据为空");  
            }  
            return $this->result;  
         }  
         //根据select查询结果计算结果集条数  
         public function db_num_rows(){  
            if($this->result=null){  
                if($this->show_error){  
                    $this->show_error("sql语句错误:","暂时为空,没有任何内容");  
                }  
            }else{  
                return mysql_num_rows($this->result);  
            }  
         }  
         //根据insert update delete执行的结果驱动影响行数  
         public function db_affected_rows(){  
            return mysql_affected_rows();  
         }  
         //输出显示sql语句  
         public  function show_error($message="",$sql=""){  
            if(!$sql){  
                echo "<font color='red'>" . $message . "</font>";  
                echo "<br>";  
            }else{  
                 echo "<fieldset>";  
                echo "<legend>错误信息提示:</legend><br />";  
                echo "<div style='font-size:14px; clear:both; font-family:Verdana, Arial, Helvetica, sans-serif;'>";  
               echo "<div style='height:20px; background:#000000; border:1px #000000 solid'>";  
                echo "<font color='white'>错误号:12142</font>";  
                echo "</div><br />";  
                echo "错误原因:" . mysql_error() . "<br /><br />";  
               echo "<div style='height:20px; background:#FF0000; border:1px #FF0000 solid'>";  
                echo "<font color='white'>" . $message . "</font>";  
                echo "</div>";  
                echo "<font color='red'><pre>" . $sql . "</pre></font>";  
                $ip = $this->getip();  
                if ($this->bulletin) {  
                    $time = date("Y-m-d H:i:s");  
                    $message = $message . "rn$this->sql" . "rn客户IP:$ip" . "rn时间 :$time" . "rnrn";  
      
                    $server_date = date("Y-m-d");  
                    $filename = $server_date . ".txt";  
                    $file_path = "error/" . $filename;  
                    $error_content = $message;  
                    //$error_content="错误的数据库,不可以链接";  
                    $file = "error"; //设置文件保存目录  
              //建立文件夹  
      if(!file_exists($file)){  
        if(!mkdir($file,0777)){  
            die("upload files directory does not exist and creation failed");  
        }  
      }  
        //建立txt日期文件  
        if(!file_exists($file_path)){  
            fopen($file_path,"w+");  
            if(is_writable($file_path)){  
                if(!$handle=fopen($file_path,'a')){  
                    echo "不能打开文件 $filename";  
                    exit;  
                }  
                if(!fwrite($handle,$error_content)){  
                    echo "不能写到文件 $filename";  
                    exit;  
                }  
                echo "——错误记录被保存!";  
              fclose($handle);  
      
            }else {  
                echo "文件 $filename 不可写";  
            }  
        }else {  
            if(is_writable($file_path)){  
                if(!$handle=fopen($file_path,'a')){  
                     echo "不能打开文件 $filename";  
                     exit;  
                }  
                if(!fwrite($handle,$error_content)){  
                    echo  "不能写入文件 $filename";  
                    exit;  
                }  
                echo "——错误记录被保存!";  
                  fclose($handle);  
            }else {  
                echo "文件 $filename 不可写";  
            }  
        }  
            }  
         echo "<br />";     
         if ($this->is_error) {  
              exit;  
                }  
            }  
         echo "</div>";  
         echo "</fieldset>";  
         echo "<br/>";  
         }  
       //释放结果集  
       public  function free(){  
        @mysql_free_result($this->result);  
       }  
       //数据库选择  
       public  function select_db($db_database){  
        return mysql_select_db($db_database);  
       }  
       //查询字段数量  
       public  function num_fields($table_name){  
        $this->query("select * from $table_name");  
        echo "<br>";  
        echo "字段数:".$total=mysql_num_fields($this->result);  
        for ($i=0;$i<$total;$i++){  
            print_r(mysql_fetch_field($this->result,$i));  
        }  
        echo "</pre>";  
        echo "<br>";  
       }  
       //取得mysql 服务器信息  
       public  function mysql_server($num=''){  
        switch ($num){  
              case 1:  
                return mysql_get_server_info();  
                break;  
                case 2:  
                return mysql_get_host_info();  
                break;  
                case 3:  
                return mysql_get_client_info();  
                break;  
                case 4:  
                return mysql_get_proto_info();  
                break;  
                default:  
                    return mysql_get_client_info();  
        }  
       }  
      public  function __destruct(){  
        if(!emptyempty($this->result)){  
            $this->free();  
        }  
        mysql_close($this->conn);  
      }  
      //获得客户端真实的ID地址  
       function getip() {  
            if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) {  
                $ip = getenv("HTTP_CLIENT_IP");  
            } else  
                if (getenv("HTTP_X_FORWARDED_FOR") &&strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), "unknown")) {  
                    $ip = getenv("HTTP_X_FORWARDED_FOR");  
                } else  
                    if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) {  
                        $ip = getenv("REMOTE_ADDR");  
                    } else  
                        if (isset ($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] &&strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) {  
                            $ip = $_SERVER['REMOTE_ADDR'];  
                        } else {  
                            $ip = "unknown";  
                        }  
            return ($ip);  
       }        
    }     
?>