<?php
/*** 数据库操作类*/
class DB {private $link_id;    private $handle;    //日志文件句柄private $is_log;private $time;public function __construct() {header("Content-type: text/html; charset=utf-8"); $this->time = $this->microtime_float();require_once 'configs/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){$this->handle = fopen($db_config["logfilepath"] . "dblog.txt", "a+");}}/*** 连接数据库*/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);}/*** 查询* Enter description here ...* @param unknown_type $sql*/public function query($sql){$this->write_log("查询 " . $sql);$query = mysql_query($sql, $this->link_id);if(!$query){$this->halt("查询失败 " . $sql);}return $query;}/*** 获取一条记录(MYSQL_ASSOC,MYSQL_NUM,MYSQL_BOTH)* Enter description here ...* @param $sql*/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;}/*** 获取全部记录* Enter description here ...* @param unknown_type $sql* @param unknown_type $result_type*/public function get_all($sql, $is_page = false, $page_num = 10, $result_type = MYSQL_ASSOC){if(!$is_page){$query = $this->query($sql);$i = 0;$rt = array();while ($row = mysql_fetch_array($query, $result_type)){$rt[$i++] = $row;}$this->write_log("获取全部记录(无翻页)" . $sql);}else{$rt = $this->page($sql, $page_num, $result_type);}return $rt;}/*** 获取全部数据(带翻页)* Enter description here ...* @param $sql            sql语句* @param $page_num        每页显示记录条数*/public function page($sql, $page_num, $result_type){session_start();$query = $this->query($sql);$all_num = mysql_num_rows($query);                    //总条数$page_all_num = ceil($all_num / $page_num);            //总页数$page = empty($_GET['page']) ? 1 : $_GET['page'];    //当前页数$page = (int)$page;                                    //安全强制转换$limit_str = ($page - 1) * $page_num;                //记录起始数$sql .= " limit $limit_str, $page_num";$query = $this->query($sql);$i = 0;$rt = array();while ($row = mysql_fetch_array($query, $result_type)){$rt[$i++] = $row;}$this->write_log("获取翻页记录(带翻页)" . $sql);$_SESSION["page_all_num"] = $page_all_num;$_SESSION["next"] = $page >= $page_all_num ? $page_all_num : $page + 1;$_SESSION["pre"] = $page <= 1 ? 1 : $page - 1;return $rt;}/*** 插入* Enter description here ...* @param unknown_type $table* @param unknown_type $dataArray*/public function insert($table,$dataArray) {$field = "";$value = "";if( !is_array($dataArray) || count($dataArray) <= 0) {$this->halt('没有要插入的数据');return false;}foreach ($dataArray as $key => $val){$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;}/*** 更新* Enter description here ...* @param unknown_type $table* @param unknown_type $dataArray* @param unknown_type $condition*/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;}/*** 删除* Enter description here ...* @param unknown_type $table* @param unknown_type $condition*/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;}/*** 返回结果集* Enter description here ...* @param unknown_type $query* @param unknown_type $result_type*/public function fetch_array($query, $result_type = MYSQL_ASSOC){$this->write_log("返回结果集");return mysql_fetch_array($query, $result_type);}/*** 获取记录条数* Enter description here ...* @param unknown_type $results*/public function num_rows($results) {if(!is_bool($results)) {$num = mysql_num_rows($results);$this->write_log("获取的记录条数为".$num);return $num;} else {return 0;}}/*** 获取最后插入的id* Enter description here ...*/public function insert_id() {$id = mysql_insert_id($this->link_id);$this->write_log("最后插入的id为".$id);return $id;}/*** 关闭数据库连接* Enter description here ...*/public 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 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);}/*** 析构函数* Enter description here ...*/public function __destruct(){$use_time = ($this->microtime_float()) - ($this->time);$this->write_log("完成整个查询任务,所用时间为 " . $use_time);if($this->is_log){fclose($this->handle);}}
}
?>

config.db.php配置文件

<?php
$db_config = array
('hostname' => 'localhost','username' => 'root','password' => '123456','database' => 'child_games','charset' => 'utf8','pconnect' => 0,                    //是否使用持久连接(0关/1开)'log' => 1,                            //是否开启日志(0关/1开)'logfilepath' => './'                //日志文件目录
);
?>

数据库连接类 DB.class.php相关推荐

  1. java数据库连接类,已经把数据库操作的方法都封装好了

    在这里分享一个已经封装好了的java数据库连接类,只要创建对象就可以实现数据库的增删改查操作,用过都说好.其实这个不是我自己写的,是一个理解和学习能力超高的朋友写的,他也很乐于分享交流,本人也深受他的 ...

  2. Php sql server2005,phpmssqlserver2005数据库连接类

    phpmssqlserver2005数据库连接类 mssql server 2005连接类 class msDriver{ public $error; public $querynum=0; pub ...

  3. JavaWeb开发基础:连接数据库的demo和数据库连接工具类DB.java

    JavaWeb开发基础:连接数据库的demo和数据库连接工具类DB.java import javax.servlet.*; import javax.servlet.http.*; import j ...

  4. 自己写的Python数据库连接类和sql语句拼接方法

    这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...

  5. php SQLite mysql_PHP实现的sqlite数据库连接类

    本文实例讲述了PHP实现的sqlite数据库连接类.分享给大家供大家参考.具体实现方法如下: 该sqlite数据库连接类就是利用了php与sqlite进行连接操作,代码如下: */ lass db_c ...

  6. python怎么和sql一起用_自己写的Python数据库连接类和sql语句拼接方法

    这个工具类十分简单和简洁. sql拼接方法 # encoding=utf-8 from django.http import HttpResponse from anyjson import seri ...

  7. 使用C#打造通用的数据库连接类

    众所周知vs.net提供了sqlserver.oledb.odbc等几种数据库连接驱动,现在比较常见的数据库连接类(如DBHelper等)只提供了其中一种连接方式,在我们开发的项目要更换数据库时或者在 ...

  8. python数据库连接类写其他类调用报超时_python面向对象,类,以及连接数据库

    ## 面向对象 ### 1.面向对象三大特性: 封装,继承,多态 ### 1.1.封装 1.在类中对数据的赋值.内部调用对外部用户是透明的 2.这使类变成了一个胶囊或容器,里面包含着类的数据和方法 3 ...

  9. java类编写sql_用JavaBean编写SQL Server数据库连接类

    以下为引用的内容: //类conn.db.conndb.java package conn.db; import java.sql.*; public class conndb { Connectio ...

最新文章

  1. div布局的几点体会
  2. CSS 行内格式化上下文中的各种高度计算
  3. 基于 Java NIO 实现简单的 HTTP 服务器
  4. jQuery Validate验证方法及教程
  5. GitHub vs. Bitbucket 不只是功能不同
  6. 第5章 数据的共享与保护
  7. oracle无效的关系运算符_每日一课 | Java 8中的instanceof运算符和访客模式替换
  8. 阶段1 语言基础+高级_1-3-Java语言高级_07-网络编程_第3节 综合案例_文件上传_2_综合案例_文件上传案例的客户端...
  9. DBA 常用的软件工具有哪些(分享篇)?
  10. C/C++框架、库、资源
  11. mysql io 优化_mysql 中io优化
  12. 关于Django响应速度慢的问题
  13. [白话解析] 通俗解析集成学习之GBDT
  14. 23种设计模式 -----Day01:简单工厂模式
  15. 矩阵论(零):线性代数基础知识整理(1)——逆矩阵、(广义)初等变换、满秩分解
  16. C++中vector<int> nums和vector<int> nums的区别
  17. word2vec中计算两个词的距离或者相似程度。
  18. Opencv-python滤镜系列(3): 凹透镜滤镜效果实现
  19. minMaxLoc用法
  20. 北斗GPS同步时钟(授时系统)技术原理详解

热门文章

  1. 一套代码小程序WebNative运行的探索01
  2. mongoose常用方法(查询篇)
  3. 关于react中setState的深入理解
  4. 空间索引 - GeoHash算法及其实现优化
  5. NSIS来自己设定快捷方式的图标
  6. 前端文章精选- 收藏集 - 掘金
  7. 调用微信高级群发接口--视频群发接口出问题(微信官方文档错误纠正)
  8. 解决MYSQL错误:ERROR 1040 (08004): Too many connections
  9. 编译openjdk源码
  10. hdu 3046(最小割)