仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 790|回复: 18
打印 上一主题 下一主题

[学习教程] PHP编程:一个功效还算完全的数据库操作类

[复制链接]
乐观 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-3 23:40:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在这里想谈谈自己这六个多月的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:01 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
admin 该用户已被删除
板凳
发表于 2015-2-6 08:05:56 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
谁可相欹 该用户已被删除
地板
发表于 2015-2-7 18:49:33 | 只看该作者
为了以后维护的方便最好是代码上都加上注释,“予人方便,自己方便”。此外开发文档什么的最好都弄齐全。我觉得这是程序员必备的素质。虽然会消耗点很多的时间。但是确实是非常有必要的。
愤怒的大鸟 该用户已被删除
5#
发表于 2015-2-10 07:31:06 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
精灵巫婆 该用户已被删除
6#
发表于 2015-2-12 20:10:00 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
透明 该用户已被删除
7#
发表于 2015-3-1 13:20:37 | 只看该作者
做为1门年轻的语言,php一直很努力。
小女巫 该用户已被删除
8#
发表于 2015-3-8 01:15:25 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
柔情似水 该用户已被删除
9#
发表于 2015-3-11 15:46:13 | 只看该作者
遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。
10#
发表于 2015-3-20 20:29:38 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
山那边是海 该用户已被删除
11#
发表于 2015-3-25 19:35:48 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
再见西城 该用户已被删除
12#
发表于 2015-4-16 01:51:36 | 只看该作者
建数据库表的时候,int型要输入长度的,其实是个摆设的输入几位都没影响的,只要大于4就行,囧。
小妖女 该用户已被删除
13#
发表于 2015-4-18 09:09:42 | 只看该作者
首先我是坚决反对新手上来就用框架的,因为对底层的东西一点都不了解,造成知识上的真空,会对以后的发展不利。我的观点上手了解下框架就好,代码还是手写。当然啦如果是位别的编程语言的高手的话,这个就另当别论啦。
老尸 该用户已被删除
14#
发表于 2015-5-1 16:11:54 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
小魔女 该用户已被删除
15#
发表于 2015-6-4 19:35:36 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
冷月葬花魂 该用户已被删除
16#
发表于 2015-6-10 07:18:41 | 只看该作者
建议加几个专业的phper的群,当然啦需要说话的人多,一处一点问题能有人回答你的,当然啦要让人回答你的问题,平时就得躲在里面聊天,大家混熟啦,愿意回答你问题的人自然就多啦。
不帅 该用户已被删除
17#
发表于 2015-6-12 19:22:37 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
只想知道 该用户已被删除
18#
发表于 2015-6-21 03:38:44 | 只看该作者
在学习的过程中不能怕麻烦,不能有懒惰的思想。学习php首先应该搭建一个lamp环境或者是wamp环境。这是学习php开发的根本。虽然网络上有很多集成的环境,安装很方便,使用起来也很稳定、
飘灵儿 该用户已被删除
19#
发表于 2015-6-24 22:15:44 | 只看该作者
个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 05:00

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表