php数据库操作类(转)
<?php Class DB { private $link_id ; private $handle ; private $is_log ; private $time ; //构造函数 public function __construct() { $this ->time = $this ->microtime_float(); require_once ( "config.db.php" ); $this ->connect( $db_config [ "hostname" ], $db_config [ "username" ], $db_config [ "password" ], $db_config [ "database" ], $db_config [ "pconnect" ]); $this ->is_log = $db_config [ "log" ]; if ( $this ->is_log){ $handle = fopen ( $db_config [ "logfilepath" ]. "dblog.txt" , "a+" ); $this ->handle= $handle ; } } //数据库连接 public function connect( $dbhost , $dbuser , $dbpw , $dbname , $pconnect = 0, $charset = 'utf8' ) { if ( $pconnect ==0 ) { $this ->link_id = @mysql_connect( $dbhost , $dbuser , $dbpw , true); if (! $this ->link_id){ $this ->halt( "数据库连接失败" ); } } else { $this ->link_id = @mysql_pconnect( $dbhost , $dbuser , $dbpw ); if (! $this ->link_id){ $this ->halt( "数据库持久连接失败" ); } } if (!@mysql_select_db( $dbname , $this ->link_id)) { $this ->halt( '数据库选择失败' ); } @mysql_query( "set names " . $charset ); } //查询 public function query( $sql ) { $this ->write_log( "查询 " . $sql ); $query = mysql_query( $sql , $this ->link_id); if (! $query ) $this ->halt( 'Query Error: ' . $sql ); return $query ; } //获取一条记录(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH) public function get_one( $sql , $result_type = MYSQL_ASSOC) { $query = $this ->query( $sql ); $rt =& mysql_fetch_array( $query , $result_type ); $this ->write_log( "获取一条记录 " . $sql ); return $rt ; } //获取全部记录 public function get_all( $sql , $result_type = MYSQL_ASSOC) { $query = $this ->query( $sql ); $i = 0; $rt = array (); while ( $row =& mysql_fetch_array( $query , $result_type )) { $rt [ $i ]= $row ; $i ++; } $this ->write_log( "获取全部记录 " . $sql ); return $rt ; } //插入 public function insert( $table , $dataArray ) { $field = "" ; $value = "" ; if ( ! is_array ( $dataArray ) || count ( $dataArray )<=0) { $this ->halt( '没有要插入的数据' ); return false; } while (list( $key , $val )=each( $dataArray )) { $field .= "$key," ; $value .= "'$val'," ; } $field = substr ( $field ,0,-1); $value = substr ( $value ,0,-1); $sql = "insert into $table($field) values($value)" ; $this ->write_log( "插入 " . $sql ); if (! $this ->query( $sql )) return false; return true; } //更新 public function update( $table , $dataArray , $condition = "" ) { if ( ! is_array ( $dataArray ) || count ( $dataArray )<=0) { $this ->halt( '没有要更新的数据' ); return false; } $value = "" ; while ( list( $key , $val ) = each( $dataArray )) $value .= "$key = '$val'," ; $value .= substr ( $value ,0,-1); $sql = "update $table set $value where 1=1 and $condition" ; $this ->write_log( "更新 " . $sql ); if (! $this ->query( $sql )) return false; return true; } //删除 public function delete ( $table , $condition = "" ) { if ( empty ( $condition ) ) { $this ->halt( '没有设置删除的条件' ); return false; } $sql = "delete from $table where 1=1 and $condition" ; $this ->write_log( "删除 " . $sql ); if (! $this ->query( $sql )) return false; return true; } //返回结果集 public function fetch_array( $query , $result_type = MYSQL_ASSOC){ $this ->write_log( "返回结果集" ); return mysql_fetch_array( $query , $result_type ); } //获取记录条数 public function num_rows( $results ) { if (! is_bool ( $results )) { $num = mysql_num_rows( $results ); $this ->write_log( "获取的记录条数为" . $num ); return $num ; } else { return 0; } } //释放结果集 public function free_result() { $void = func_get_args(); foreach ( $void as $query ) { if ( is_resource ( $query ) && get_resource_type( $query ) === 'mysql result' ) { return mysql_free_result( $query ); } } $this ->write_log( "释放结果集" ); } //获取最后插入的id public function insert_id() { $id = mysql_insert_id( $this ->link_id); $this ->write_log( "最后插入的id为" . $id ); return $id ; } //关闭数据库连接 protected function close() { $this ->write_log( "已关闭数据库连接" ); return @mysql_close( $this ->link_id); } //错误提示 private function halt( $msg = '' ) { $msg .= "\r\n" .mysql_error(); $this ->write_log( $msg ); die ( $msg ); } //析构函数 public function __destruct() { $this ->free_result(); $use_time = ( $this -> microtime_float())-( $this ->time); $this ->write_log( "完成整个查询任务,所用时间为" . $use_time ); if ( $this ->is_log){ fclose( $this ->handle); } } //写入日志文件 public function write_log( $msg = '' ){ if ( $this ->is_log){ $text = date ( "Y-m-d H:i:s" ). " " . $msg . "\r\n" ; fwrite( $this ->handle, $text ); } } //获取毫秒数 public function microtime_float() { list( $usec , $sec ) = explode ( " " , microtime()); return ((float) $usec + (float) $sec ); } } ?> |
2. [代码]config.db.php 跳至 [1] [2] [全屏预览]
1
2
3
4
5
6
7
8
9
10
|
<?php $db_config [ "hostname" ] = "localhost" ; //服务器地址 $db_config [ "username" ] = "root" ; //数据库用户名 $db_config [ "password" ] = "123" ; //数据库密码 $db_config [ "database" ] = "test" ; //数据库名称 $db_config [ "charset" ] = "utf8" ; //数据库编码 $db_config [ "pconnect" ] = 1; //开启持久连接 $db_config [ "log" ] = 1; //开启日志 $db_config [ "logfilepath" ] = './' ; //开启日志 ?> |
php数据库操作类(转)的更多相关文章
- 【知识必备】ezSQL,最好用的数据库操作类,让php操作sql更简单~
最近用php做了点小东东,用上了ezSQL,感觉真的很ez,所以拿来跟大家分享一下~ ezSQL是一个非常好用的PHP数据库操作类.著名的开源博客WordPress的数据库操作就使用了ezSQL的My ...
- Android打造属于自己的数据库操作类。
1.概述 开发Android的同学都知道sdk已经为我们提供了一个SQLiteOpenHelper类来创建和管理SQLite数据库,通过写一个子类去继承它,就可以方便的创建.管理数据库.但是当我们需要 ...
- PHP 数据库操作类:ezSQL
EZSQL类介绍: 下载地址:http://www.jb51.net/codes/26393.htmlezsql是一个小型的快速的数据库操作类,可以让你很容易地用PHP操作各种数据库( MySQL.o ...
- 通用数据库操作类,前端easyui-datagrid,form
实现功能: 左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改 (1)点击选中行,右侧显示详细信息,其中[新增].[修改].[删除]按钮可用,[保存]按钮禁用 (2)点击[ ...
- php : mysql数据库操作类演示
设计目标: 1,该类一实例化,就可以自动连接上mysql数据库: 2,该类可以单独去设定要使用的连接编码(set names XXX) 3,该类可以单独去设定要使用的数据库(use XXX): 4,可 ...
- php MySQL数据库操作类源代码
php MySQL数据库操作类源代码: <?php class MySQL{ private $host; //服务器地址 private $name; //登录账号 private $pwd; ...
- 一个基于PDO的数据库操作类(新) 一个PDO事务实例
<?php /* * 作者:胡睿 * 日期:2011/03/19 * 电邮:hooray0905@foxmail.com * * 20110319 * 常用数据库操作,如:增删改查,获取单条记录 ...
- ecshop数据库操作类
ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现. 好处:实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小. 当网站需要做me ...
- 设计模式 - 单例模式mysql数据库操作类
待续... index.php 调用方法: <?php header('Content-Type:text/html; charset=utf8'); require 'instance.php ...
- ECShop - 数据库操作类
ECShop v2.7.2没有使用一些开源的数据库操作类,比如adodb或者PEAR,而是封装了自己的实现.这样做的好处是实现非常轻量,只有一个文件,27Kb,大大减小了分发包的文件大小.另外,当网站 ...
随机推荐
- otl使用存储过程或是LEFT JOIN时提示输出类型未知的问题
otl_stream的构造函数或成员函数open的第四个参数const int implicit_select 默认是otl_explicit_select.当使用存储过程时,必须指定为otl_imp ...
- 微信小程序自定义数据分析试水
昨晚收到小程序自定义分析的内测邀请,简单试用了一下.说明挺长的,大概是这个意思: 一.定义一系列事件,对其进行统计 事件可以对页面中的这些事件进行追踪 click enterPage leavePag ...
- oauth2-server-php for windows 的那些坑 (研究中...)
oauth2-server-php for windows 的那些坑 在windwos 环境下,使用vs2017 for php 工具进行调试时,总是搞不出来, 于是分析了一下原因, 首先,oauth ...
- [Algorithm] Print All Subsets of a Set
Let's say given a number of array, you should print out, all the subet of this array. Example: [1, 2 ...
- [Backbone]8. Level 7: Router and history
1. Ceate a route Class var AppRouter = Backbone.Router.extend({ }); 2. Add a route name it "sho ...
- 一、NoSQL入门概述
- wireshark 的使用(filter的用法)
转自:http://blog.csdn.net/hanyuxinting/article/details/5558095 过滤器语法---------------------------------- ...
- curl_errno错误码说明
http://hi.baidu.com/lifang218c/item/fa80496eb4cf262f68105b50 http://blog.csdn.net/cwj649956781/artic ...
- wepy - 安装less/sass
关于sass\less,在wepy文档里寻找 演示安装,默认已经安装了less,我们需要安装的是scss 安装less或scss yarn yarn add wepy-compiler-sass np ...
- 【.NET特供-第三季】ASP.NET MVC系列:传统WebForm站点和MVC站点执行机制对照
本文以图形化的方式,从'执行机制'方面对照传统WebForm站点和MVC站点. 请參看下面图形: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemhhb2 ...