php mysql数据库操作类


Posted in PHP onJune 04, 2008
<?php 
/* 
 *    mysql数据库 DB类 
 *    @package    db 
 *    @author        yytcpt(无影) 
 *    @version    2008-03-27 
 *    @copyrigth    http://www.d5s.cn/  
 */ 
class db { 
    var $connection_id = ""; 
    var $pconnect = 0; 
    var $shutdown_queries = array(); 
    var $queries = array(); 
    var $query_id = ""; 
    var $query_count = 0; 
    var $record_row = array(); 
    var $failed = 0; 
    var $halt = ""; 
    var $query_log = array(); 
    function connect($db_config){ 
        if ($this->pconnect){ 
            $this->connection_id = mysql_pconnect($db_config["hostname"], $db_config["username"], $db_config["password"]); 
        }else{ 
            $this->connection_id = mysql_connect($db_config["hostname"], $db_config["username"], $db_config["password"]); 
        } 
        if ( ! $this->connection_id ){ 
            $this->halt("Can not connect MySQL Server"); 
        } 
        if ( ! @mysql_select_db($db_config["database"], $this->connection_id) ){ 
            $this->halt("Can not connect MySQL Database"); 
        } 
        if ($db_config["charset"]) { 
            @mysql_unbuffered_query("SET NAMES '".$db_config["charset"]."'"); 
        } 
        return true; 
    } 
    //发送SQL 查询,并返回结果集 
    function query($query_id, $query_type='mysql_query'){ 
        $this->query_id = $query_type($query_id, $this->connection_id); 
        $this->queries[] = $query_id; 
        if (! $this->query_id ) { 
            $this->halt("查询失败:\n$query_id"); 
        } 
        $this->query_count++; 
        $this->query_log[] = $str; 
        return $this->query_id; 
    } 
    //发送SQL 查询,并不获取和缓存结果的行 
    function query_unbuffered($sql=""){ 
        return $this->query($sql, 'mysql_unbuffered_query'); 
    } 
    //从结果集中取得一行作为关联数组 
    function fetch_array($sql = ""){ 
        if ($sql == "") $sql = $this->query_id; 
        $this->record_row = @mysql_fetch_array($sql, MYSQL_ASSOC); 
        return $this->record_row; 
    } 
    function shutdown_query($query_id = ""){ 
        $this->shutdown_queries[] = $query_id; 
    } 
    //取得结果集中行的数目,仅对 INSERT,UPDATE 或者 DELETE 
    function affected_rows() { 
        return @mysql_affected_rows($this->connection_id); 
    } 
    //取得结果集中行的数目,仅对 SELECT 语句有效 
    function num_rows($query_id="") { 
        if ($query_id == "") $query_id = $this->query_id; 
        return @mysql_num_rows($query_id); 
    } 
    //返回上一个 MySQL 操作中的错误信息的数字编码 
    function get_errno(){ 
        $this->errno = @mysql_errno($this->connection_id); 
        return $this->errno; 
    } 
    //取得上一步 INSERT 操作产生的 ID 
    function insert_id(){ 
        return @mysql_insert_id($this->connection_id); 
    } 
    //得到查询次数 
    function query_count() { 
        return $this->query_count; 
    } 
    //释放结果内存 
    function free_result($query_id=""){ 
           if ($query_id == "") $query_id = $this->query_id; 
        @mysql_free_result($query_id); 
    } 
    //关闭 MySQL 连接 
    function close_db(){ 
        if ( $this->connection_id ) return @mysql_close( $this->connection_id ); 
    } 
    //列出 MySQL 数据库中的表 
    function get_table_names(){ 
        global $db_config; 
        $result = mysql_list_tables($db_config["database"]); 
        $num_tables = @mysql_numrows($result); 
        for ($i = 0; $i < $num_tables; $i++) { 
            $tables[] = mysql_tablename($result, $i); 
        } 
        mysql_free_result($result); 
        return $tables; 
       } 
    //从结果集中取得列信息并作为对象返回,取得所有字段 
    function get_result_fields($query_id=""){ 
           if ($query_id == "") $query_id = $this->query_id; 
        while ($field = mysql_fetch_field($query_id)) { 
            $fields[] = $field; 
        } 
        return $fields; 
       } 
    //错误提示 
    function halt($the_error=""){ 
        $message = $the_error."<br/>\r\n"; 
        $message.= $this->get_errno() . "<br/>\r\n"; 
        $sql = "INSERT INTO `db_error`(pagename, errstr, timer) VALUES('".$_SERVER["PHP_SELF"]."', '".addslashes($message)."', ".time().")"; 
        @mysql_unbuffered_query($sql); 
        if (DEBUG==true){ 
            echo "<html><head><title>MySQL 数据库错误</title>"; 
            echo "<style type=\"text/css\"><!--.error { font: 11px tahoma, verdana, arial, sans-serif, simsun; }--></style></head>\r\n"; 
            echo "<body>\r\n"; 
            echo "<blockquote>\r\n"; 
            echo "<textarea class=\"error\" rows=\"15\" cols=\"100\" wrap=\"on\" >" . htmlspecialchars($message) . "</textarea>\r\n"; 
            echo "</blockquote>\r\n</body></html>"; 
            exit; 
        } 
    } 
    function __destruct(){ 
        $this->shutdown_queries = array(); 
        $this->close_db(); 
    } 
    function sql_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){ 
        $sql = "SELECT ".$fields." FROM `".$tbname."` ".($where?" WHERE ".$where:"")." ORDER BY ".$orderby." ".$sort.($limit ? " limit ".$limit:""); 
        return $sql; 
    } 
    function sql_insert($tbname, $row){ 
        foreach ($row as $key=>$value) { 
            $sqlfield .= $key.","; 
            $sqlvalue .= "'".$value."',"; 
        } 
        return "INSERT INTO `".$tbname."`(".substr($sqlfield, 0, -1).") VALUES (".substr($sqlvalue, 0, -1).")"; 
    } 
    function sql_update($tbname, $row, $where){ 
        foreach ($row as $key=>$value) { 
            $sqlud .= $key."= '".$value."',"; 
        } 
        return "UPDATE `".$tbname."` SET ".substr($sqlud, 0, -1)." WHERE ".$where; 
    } 
    function sql_delete($tbname, $where){ 
        return "DELETE FROM `".$tbname."` WHERE ".$where; 
    } 
    //新增加一条记录 
    function row_insert($tbname, $row){ 
        $sql = $this->sql_insert($tbname, $row); 
        return $this->query_unbuffered($sql); 
    } 
    //更新指定记录 
    function row_update($tbname, $row, $where){ 
        $sql = $this->sql_update($tbname, $row, $where); 
        return $this->query_unbuffered($sql); 
    } 
    //删除满足条件的记录 
    function row_delete($tbname, $where){ 
        $sql = $this->sql_delete($tbname, $where); 
        return $this->query_unbuffered($sql); 
    } 
    /*    根据条件查询,返回所有记录 
     *    $tbname 表名, $where 查询条件, $limit 返回记录, $fields 返回字段 
     */ 
    function row_select($tbname, $where="", $limit=0, $fields="*", $orderby="id", $sort="DESC"){ 
        $sql = $this->sql_select($tbname, $where, $limit, $fields, $orderby, $sort); 
        return $this->row_query($sql); 
    } 
    //详细显示一条记录 
    function row_select_one($tbname, $where, $fields="*", $orderby="id"){ 
        $sql = $this->sql_select($tbname, $where, 1, $fields, $orderby); 
        return $this->row_query_one($sql); 
    } 
    function row_query($sql){ 
        $rs     = $this->query($sql); 
        $rs_num = $this->num_rows($rs); 
        $rows = array(); 
        for($i=0; $i<$rs_num; $i++){ 
            $rows[] = $this->fetch_array($rs); 
        } 
        $this->free_result($rs); 
        return $rows; 
    } 
    function row_query_one($sql){ 
        $rs     = $this->query($sql); 
        $row = $this->fetch_array($rs); 
        $this->free_result($rs); 
        return $row; 
    } 
    //计数统计 
    function row_count($tbname, $where=""){ 
        $sql = "SELECT count(id) as row_sum FROM `".$tbname."` ".($where?" WHERE ".$where:""); 
        $row = $this->row_query_one($sql); 
        return $row["row_sum"]; 
    } 
} 
?>

很久没有发帖了,把我常用的一些php类文件分享出来。
如果您加了新功能,或者是有改进,请与大家一起分享。
<?php 
    $db_config["hostname"]    = "127.0.0.1";    //服务器地址 
    $db_config["username"]    = "root";        //数据库用户名 
    $db_config["password"]    = "root";        //数据库密码 
    $db_config["database"]    = "wap_blueidea_com";        //数据库名称 
    $db_config["charset"]        = "utf8"; 
    include('db.php'); 
    $db    = new db(); 
    $db->connect($db_config); 
    //例:查询表 table_name 中 cid=1的所有记录。 
    $row = $db->row_select('table_name', 'cid=1'); 
?>

更详细的使用方法,请参考 db类文件中的注释。 
PHP 相关文章推荐
生成静态页面的PHP类
Jul 15 PHP
PHP中的正规表达式(一)
Oct 09 PHP
PHP 程序员应该使用的10个组件
Oct 31 PHP
PHP源码之explode使用说明
Aug 05 PHP
destoon数据库表说明汇总
Jul 15 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
Aug 21 PHP
ThinkPHP实现带验证码的文件上传功能实例
Nov 01 PHP
PHP针对JSON操作实例分析
Jan 12 PHP
php数组去除空值函数分享
Feb 02 PHP
php单一接口的实现方法
Jun 20 PHP
PHP pthreads v3在centos7平台下的安装与配置操作方法
Feb 21 PHP
PHP获取类私有属性的3种方法
Sep 10 PHP
CodeIgniter php mvc框架 中国网站
May 26 #PHP
五个PHP程序员工具
May 26 #PHP
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
May 26 #PHP
JS实现php的伪分页
May 25 #PHP
php中iconv函数使用方法
May 24 #PHP
在PHP中使用模板的方法
May 24 #PHP
php读取数据库信息的几种方法
May 24 #PHP
You might like
PHP中foreach循环中使用引用要注意的地方
2011/01/02 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
jquery $.ajax入门应用二
2008/11/19 Javascript
让firefox支持IE的一些方法的javascript扩展函数代码
2010/01/02 Javascript
jquery 事件对象属性小结
2010/04/27 Javascript
用js解决数字不能换行问题
2010/08/10 Javascript
jQuery学习基础知识小结
2010/11/25 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
JS子父窗口互相操作取值赋值的方法介绍
2013/05/11 Javascript
js 显示base64编码的二进制流网页图片
2014/04/04 Javascript
jQuery EasyUi实战教程之布局篇
2016/01/26 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
2016/06/14 Javascript
详解vue父子模版嵌套案例
2017/03/04 Javascript
Bootstrap如何激活导航状态
2017/03/22 Javascript
React Js 微信禁止复制链接分享禁止隐藏右上角菜单功能
2017/05/26 Javascript
关于vue-router的那些事儿
2018/05/23 Javascript
关于layui时间回显问题的解决方法
2019/09/24 Javascript
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
详解python上传文件和字符到PHP服务器
2017/11/24 Python
浅谈Python NLP入门教程
2017/12/25 Python
python numpy 部分排序 寻找最大的前几个数的方法
2018/06/27 Python
对pyqt5之menu和action的使用详解
2019/06/20 Python
python使用正则表达式匹配txt特定字符串(有换行)
2020/12/09 Python
埃弗顿足球俱乐部官方网上商店:Everton Direct
2018/01/13 全球购物
Vans(范斯)新西兰官方网站:美国原创极限运动品牌
2020/09/19 全球购物
污水厂厂长岗位职责
2014/01/04 职场文书
优秀员工评语
2014/02/10 职场文书
大学应届生的自我评价
2014/03/06 职场文书
保密协议书范本
2014/04/22 职场文书
化学教育专业自荐信
2014/07/04 职场文书
金陵十三钗观后感
2015/06/04 职场文书
毕业赠语大全
2015/06/23 职场文书
2016年5月份红领巾广播稿
2015/12/21 职场文书
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
2021/06/09 Vue.js
【海涛dota】偶遇拉娜娅 质量局德鲁伊第一视角解说
2022/04/01 DOTA
用PYTHON去计算88键钢琴的琴键频率和音高
2022/04/10 Python