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,大大减小了分发包的文件大小.另外,当网站 ...
随机推荐
- scala编程第19章学习笔记(1)——类型参数化
一.queues函数式队列 函数式队列是一种具有以下三种操作方式的数据结构: head 返回队列的第一个元素. tail 返回除第一个元素之外的队列. scala> import scala.c ...
- OpenCV学习(31) 基于defects的简单手势
前几年在做毕业设计时候曾用opencv1.0中defects做过简单的手势识别,这几天看OpenCV2.46中的轮廓函数,发现和以前差别挺大,函数调用完全不一样,重新实现了简单手势的代码. 1.首先用 ...
- [8] 圆面(Round)图形的生成算法
顶点数据的生成 bool YfBuildRoundVertices ( Yreal radius, Yreal height, Yuint slices, YeOriginPose originPos ...
- 如何关掉UAC?
你可能会问, 这也值得一写? 唉, 怎么说呢, 谁让咱一开始不会呢. ^_^ 好记性不如烂笔头嘛. 1. 打开一个command prompt, 输入msconfig回车. 2. 点击tools选 ...
- Longest Common Prefix leetcode java
题目: Write a function to find the longest common prefix string amongst an array of strings. 题解: 解题思路是 ...
- Search in Rotated Sorted Array II leetcode java
题目: Follow up for "Search in Rotated Sorted Array": What if duplicates are allowed? Would ...
- 线程 Timer TimerTask 计时器 定时任务 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- Linux下删除相互依赖的包
今天遇到一个问题,使用RPM 卸载包的时候两个包相互依赖 包A 和包B 卸载A的时候提示需要先卸载B ,反之亦然 经过一番百度 可以在命令后面加参数--nodeps 例如 rpm -e php-jso ...
- struts2基础梳理(二)
本篇主要有:设置struts2匹配的扩展名.使用通配符,值栈,声明式异常以及标签. 设置扩展名: 默认是对.action和不加不论什么扩展名的进行处理.能够设置: <constant name= ...
- redis sentinel(哨兵机制)部署(Windows下实现)
另外参考:http://www.cnblogs.com/LiZhiW/p/4851631.html 一.准备条件 1.操作系统:win7 2.redis版本:redis-2.8.19 二.下载Redi ...