仓酷云

标题: PHP编程:一个功效还算完全的数据库操作类 [打印本页]

作者: 乐观    时间: 2015-2-3 23:40
标题: PHP编程:一个功效还算完全的数据库操作类
在这里想谈谈自己这六个多月的PHP学习心得,希望对给比我还新的新手们有所帮助,讲的不是很深刻,甚至有的想法可能是错误的,希望不要误导新人才好,大家要有自己的主见。  
  1. <?php    /*   *   Author  墨龙   *   Time    2010年12月2日 15:50:35    */        $db = new mysql($db_host,$db_user,$db_password,$db_table,$db_conn,$pre,$coding);        class mysql{                private    $db_host;        private    $db_user;        private    $db_password;        private    $db_table;        private    $db_conn;           //数据库毗连
    标识;        private    $result;         //履行
    query号令
    的了局
    资本
    标识        private    $sql;      //sql履行
    语句        private    $pre;      //数据库表前缀          private    $coding;  //数据库编码,GBK,UTF8,gb2312                        function __construct($db_host,$db_user,$db_password,$db_table,$db_conn,$pre,$coding){                        $this->db_host     = $db_host;            $this->db_user     = $db_user;            $this->db_password = $db_password;            $this->db_table    = $db_table;            $this->db_conn     = $db_conn;            $this->pre         = $pre;            $this->coding      = $coding;            $this->connect();                }                function connect(){                        $this->db_conn = @mysql_connect($this->db_host,$this->db_user,$this->db_password) or die($this->show_error("数据库链接毛病
    ,请反省
    数据库链接设置装备摆设
    !"));            if(!mysql_select_db($this->db_table,$this->db_conn)){                                echo "没有找到数据表:".$this->db_table;            }            mysql_select_db($this->db_table,$this->db_conn);            $this->query("SET NAMES $this->coding");        }                /*履行
    SQL语句的函数*/        function query($sql){                        if(emptyempty($sql)){                $this->show_error("你的sql语句不克不及
    为空!");            }else{                          $this->sql = $sql;            }            $result = mysql_query($this->sql,$this->db_conn);                        return $this->result = $result;        }                /*创立
    添加新的数据库*/        public function create_database($database_name){            $database=$database_name;            $sqlDatabase = 'create database '.$database;            return $this->query($sqlDatabase);        }                    // 依据
    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);              }        }                /*查询办事
    器一切
    数据库*/        //将体系
    数据库与用户数据库分隔
    ,更直不雅
    的显示?        public function show_databases(){            $this->query("show databases");            echo "现无数
    据库:".$amount =$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->db_conn);             $i=0;             $cnt=mysql_num_rows($rsPtr);             while($i<$cnt)             {               $rs[]=mysql_db_name($rsPtr,$i);               $i++;             }             return print_r($rs);         }                        /*查询数据库下一切
    的表*/        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++;            }        }            /*       mysql_fetch_row()    array  $row[0],$row[1],$row[2]       mysql_fetch_array()  array  $row[0] 或 $row[id]       mysql_fetch_assoc()  array  用$row->content 字段巨细
    写敏感       mysql_fetch_object() object 用$row[id],$row[content] 字段巨细
    写敏感       */        /*获得
    纪录
    集,获得
    数组-索引和联系关系
    ,利用
    $row['content'] */        public function fetch_array()          {                   return @mysql_fetch_array($this->result);         }                   //获得
    联系关系
    数组,利用
    $row['字段名']        public function fetch_ass()         {             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){            $table = $this->fulltablename($table);            $this->query("select * from $table");        }                public function select($table,$columnName,$condition){            $table = $this->fulltablename($table);            if(emptyempty($columnName)){                $columnName = "*";            }            $this->query("SELECT $columnName FROM $table $condition");        }                //简化的insert        function insert($table,$arr){            $table = $this->fulltablename($table);            $sql = "INSERT INTO $table ";            if(!is_array($arr)){                $this->show_error("请输出
    参数数组!");            }else{            $k = "";            $v = "";            foreach($arr as $key => $value){                $k .= "`$key`,";                $v .= "'".$value."',";            }            }            $sql = $sql." (".substr($k,0,-1).") VALUES (".substr($v,0,-1).")";            $this->query($sql);        }        //简化的update        function update($table,$arr,$where){            $table = $this->fulltablename($table);            $sql = "UPDATE $table SET ";            if(!is_array($arr)){                $this->show_error("请输出
    参数数组!");            }else{            foreach($arr as $key => $value){                $sql .= " `".$key."` = '".$value."' ,";            }            }            $sql = substr($sql,0,-1)." where ".$where;            return $this->query($sql);        }        //简化的delete        function delete($table,$where = ""){            $table = $this->fulltablename($table);            if(emptyempty($where)){                $this->show_error("前提
    不克不及
    为空!");            }else{                $where = " where ".$where;            }            $sql = "DELETE FROM $table ".$where;            //echo $sql;            return $this->query($sql);        }                //获得
    上一步 INSERT 操作发生
    的 ID        public function insert_id(){            return mysql_insert_id();        }                //加上前缀的数据表        public function fulltablename($table){            return $table = $this->pre.$table;        }                //查询字段数目
            public function num_fields($table){            $table = $this->fulltablename($table);               $this->query("select * from $table");            echo "<br />";            echo "字段数:".$total = mysql_num_fields($this->result);            echo "<pre>";            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(); //MySQL 办事
    器信息                   break;                                case 2 :                return mysql_get_host_info();   //获得
    MySQL 主机信息                break;                                case 3 :                return mysql_get_client_info(); //获得
    MySQL 客户端信息                break;                                case 4 :                return mysql_get_proto_info();  //获得
    MySQL 协定
    信息                break;                                default:                return mysql_get_client_info(); //默许
    获得
    mysql版本信息            }        }                //析构函数,主动
    封闭
    数据库,渣滓
    收受接管
    机制        /*public function __destruct()       {           if(!empty($this->result)){                $this->free();           }           mysql_close($this->$db_conn);       }*/                /*取得
    客户端真实的IP地址*/        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);        }                    function show_error($str){                  echo "<script language='Javascript'> alert('".$str."');history.back(-1);</script>";        }            }    ?>   
复制代码
<P style="TEXT-INDENT: 2em">
参加PHP开发学习,或许只是一次偶然的想法吧!只是想在走向社会之前体验、学习在一个公司或者说是项目团队之中如何去更有效的沟通、交流、共同合作,还有就是为毕业实习找工作增加伐码。
作者: 爱飞    时间: 2015-2-4 05:11
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
作者: admin    时间: 2015-2-6 08:05
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
作者: 谁可相欹    时间: 2015-2-7 18:49
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
作者: 愤怒的大鸟    时间: 2015-2-10 07:31
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
作者: 精灵巫婆    时间: 2015-2-12 20:10
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 透明    时间: 2015-3-1 13:20
做为1门年轻的语言,php一直很努力。
作者: 小女巫    时间: 2015-3-8 01:15
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
作者: 柔情似水    时间: 2015-3-11 15:46
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
作者: 仓酷云    时间: 2015-3-20 20:29
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
作者: 山那边是海    时间: 2015-3-25 19:35
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
作者: 再见西城    时间: 2015-4-16 01:51
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
作者: 小妖女    时间: 2015-4-18 09:09
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
作者: 老尸    时间: 2015-5-1 16:11
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
作者: 小魔女    时间: 2015-6-4 19:35
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
作者: 冷月葬花魂    时间: 2015-6-10 07:18
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
作者: 不帅    时间: 2015-6-12 19:22
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
作者: 只想知道    时间: 2015-6-21 03:38
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
作者: 飘灵儿    时间: 2015-6-24 22:15
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2