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,大大减小了分发包的文件大小.另外,当网站 ...
随机推荐
- 应用Flume+HBase采集和存储日志数据
1. 在本方案中,我们要将数据存储到HBase中,所以使用flume中提供的hbase sink,同时,为了清洗转换日志数据,我们实现自己的AsyncHbaseEventSerializer. pac ...
- DotNetBar中dotNetBarManager设置窗口 实现单文档视图界面
本人想设计一个但文档视图的界面: |--------------------------------------------------------------- | Ribbon Bar |-- ...
- [leetcode]Binary Tree Preorder Traversal @ Python
原题地址:http://oj.leetcode.com/problems/binary-tree-preorder-traversal/ 题意:这题用递归比较简单.应该考察的是使用非递归实现二叉树的先 ...
- Android下拉刷新-SwipeRefreshLayout
现在市面上新闻类的App基本上都有下拉刷新,算是一个标配吧,网上关于下拉刷新的博客也有很多,实现方式可以使用开源的PullToRefresh,自定义ListView,或者可以直接使用LineLayOu ...
- 【软引用】弱引用 图片的加载与缓存 OOM
在java.lang.ref包中提供了几个类:SoftReference类.WeakReference类和PhantomReference类,它们分别代表软引用.弱引用和虚引用. ReferenceQ ...
- Android 当修改一些代码时,使用什么编译命令可以最有效率
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处: CSDN:http://www.csdn.net ...
- Qtcreator中常用快捷键总结
F1 查看帮助F2 跳转到函数定义(和Ctrl+鼠标左键一样的效果)Shift+F2 声明和定义之间切换F4 头文件和源文件之间切换Ctrl+1 ...
- ZH奶酪:在博客中添加Latex公式
1. 点击编辑器中的插入图片: 2.在URL输入下边的地址: http://latex.codecogs.com/gif.latex?你的latex代码 就可以了-
- Android 之布局(一)
Android的布局类型: 主要有:LinearLayout(线性布局).RelativeLayout(相对布局).TableLayout(表格布局).AbsoluteLayout(绝对布局).Fra ...
- Java的类名与文件名必须一致(转)
原文:http://blog.csdn.net/shaoxiaoning/article/details/40424087 1.Java保存的文件名必须与类名一致: 2.如果文件中只有一个类,文件名必 ...