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 裁剪图片成固定大小代码方法
Sep 09 PHP
php header Content-Type类型小结
Jul 03 PHP
浅析PHP 按位与或 (^ 、&amp;)
Jun 21 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
使用ob系列函数实现PHP网站页面静态化
Aug 13 PHP
CentOS 6.3下安装PHP xcache扩展模块笔记
Sep 10 PHP
php实现简单的MVC框架实例
Sep 23 PHP
百万级别知乎用户数据抓取与分析之PHP开发
Sep 28 PHP
PHP中字符与字节的区别及字符串与字节转换示例
Oct 15 PHP
php关联数组与索引数组及其显示方法
Mar 12 PHP
PHP5.0~5.6 各版本兼容性cURL文件上传功能实例分析
May 11 PHP
php通过各种函数判断0和空
Jul 04 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 file_get_contents设置超时处理方法
2013/09/30 PHP
php object转数组示例
2014/01/15 PHP
php将url地址转化为完整的a标签链接代码(php为url地址添加a标签)
2014/01/17 PHP
PHP的变量类型和作用域详解
2014/03/12 PHP
php+js实现异步图片上传实例分享
2014/06/02 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
2017/12/25 PHP
Thinkphp5 自定义上传文件名的实现方法
2019/07/23 PHP
解放web程序员的输入验证
2006/10/06 Javascript
模拟jQuery ajax服务器端与客户端通信的代码
2011/03/28 Javascript
简介JavaScript中的setTime()方法的使用
2015/06/11 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
详解jQuery中的empty、remove和detach
2016/04/11 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
Python中使用select模块实现非阻塞的IO
2015/02/03 Python
Python针对给定字符串求解所有子序列是否为回文序列的方法
2018/04/21 Python
windows下python安装小白入门教程
2018/09/18 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
python对指定字符串逆序的6种方法(小结)
2020/04/02 Python
python MD5加密的示例
2020/10/19 Python
pycharm 如何取消连按两下shift出现的全局搜索
2021/01/15 Python
HTML5之HTML元素扩展(下)—增强的Form表单元素值得关注
2013/01/31 HTML / CSS
英国最大的LED专业零售商:Led Hut
2018/03/16 全球购物
教师自我鉴定
2013/12/13 职场文书
学习保证书范文
2014/04/30 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
运动会演讲稿50字
2014/08/25 职场文书
租房协议书
2014/09/12 职场文书
刑事上诉状(无罪)
2015/05/23 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
一文搞懂Python Sklearn库使用
2021/08/23 Python
nginx实现动静分离的方法示例
2021/11/07 Servers