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 相关文章推荐
基于mysql的论坛(6)
Oct 09 PHP
优化使用mysql存储session的php代码
Jan 10 PHP
DedeCMS dede_channeltype表字段注释
Apr 07 PHP
用php制作简单分页(从数据库读取记录)的方法详解
May 04 PHP
关于php 接口问题(php接口主要也就是运用curl,curl函数)
Jul 01 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
php限制文件下载速度的代码
Oct 20 PHP
PHP is_array() 检测变量是否是数组的实现方法
Jun 13 PHP
php如何执行非缓冲查询API
Jul 22 PHP
PHP面向对象程序设计之类与反射API详解
Dec 02 PHP
用PHP的socket实现客户端到服务端的通信实例详解
Feb 04 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 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下读取文本文件的代码
2008/07/02 PHP
PHP定时执行计划任务的多种方法小结
2011/12/19 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP简单实现图片格式转换(jpg转png,gif转png等)
2019/10/30 PHP
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
formValidator3.3的ajaxValidator一些异常分析
2011/07/12 Javascript
easyui datagrid 键盘上下控制选中行示例
2014/03/31 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
javascript感应鼠标图片透明度显示的方法
2015/02/24 Javascript
基于jQuery实现仿百度首页换肤背景图片切换代码
2015/08/25 Javascript
React Native实现简单的登录功能(推荐)
2016/09/19 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
2017/01/26 Javascript
BootStrap框架中的data-[ ]自定义属性理解(推荐)
2017/02/14 Javascript
vue使用i18n实现国际化的方法详解
2019/09/05 Javascript
Vue-resource安装过程及使用方法解析
2020/07/21 Javascript
如何在JavaScript中使用localStorage详情
2021/02/04 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python数据处理numpy.median的实例讲解
2018/04/02 Python
Python-split()函数实例用法讲解
2020/12/18 Python
python实现按日期归档文件
2021/01/30 Python
中国专业的音频分享平台:喜马拉雅
2019/05/24 全球购物
捷克家具销售网站:SCONTO Nábytek
2020/01/02 全球购物
实习销售业务员自我鉴定
2013/09/21 职场文书
市政管理求职信范文
2014/05/07 职场文书
岗位标兵事迹材料
2014/05/17 职场文书
社区护士演讲稿
2014/08/27 职场文书
面试自我评价范文
2014/09/17 职场文书
酒店管理专业毕业生自我鉴定
2014/09/29 职场文书
深入开展党的群众路线教育实践活动心得体会
2014/11/05 职场文书
法律意见书范文
2015/06/04 职场文书
有关西游记的读书笔记
2015/06/25 职场文书
2016年小学“我们的节日·中秋节”活动总结
2016/04/05 职场文书
Python Django获取URL中的数据详解
2021/11/01 Python