2014-09-05
mysql 数据库操作类,分享给大家
[php]
<?php
/**
*db.class.php create databse object
*
*@author Dick 417@668x.net
*@copyright http://blog.csdn.net/haibrother
*
**/
class Dick_Db{
public $db_host = ''; //主机地址
public $db_username = ''; //数据库帐号
public $db_password = ''; //数据库密码
public $db_name = ''; //数据库名
public $link = ''; //数据库连接对象
public $debug = 1; //是否开启debug调试,默认是开启的
public $pconnect = 0; //是否开启长连接,默认是关闭的
public $log_file = 'log/';//日志文件目录
/**
*初始化信息
*@param object
**/
public function __construct($config=''){
if(!is_object($config)){
$this->halt('database config is not wrong,please check it!');
}
if(!empty($config)){
$this->db_host = $config->host;
$this->db_username = $config->username;
$this->db_password = $config->password;
$this->db_name = $config->dbname;
}
$this->connect();
}
/**
* 获取链接
* */
public function connect(){
$connect = $this->pconnect === 1?'mysql_pconnect':'mysql_connect';
if(!$this->link = @$connect($this->db_host,$this->db_username,$this->db_password)){
$this->halt('Database cant not connect!');
}
mysql_set_charset('utf8',$this->link);
mysql_select_db($this->db_name,$this->link);
}
/**
*query
*@param string $sql
*return boolean
**/
public function query($sql){
if(!$query = mysql_query($sql,$this->link)){
$message = date('Y-m-d H:i:s').' '.$sql;
$this-> write_log($message);
$this->halt('SQL error,please check it!',$sql);
}
return $query;
}
/**
*
*@param string $sql
*@param string $type
* mysql_fetch_assoc mysql_fetch_array mysql_fetch_row mysql_affected_rows
*@return array
*/
public function fetch($sql,$type='assoc'){
$fetch_type = 'mysql_fetch_'.$type;
$query = $this->query($sql);
$result = $fetch_type($query);
$this->free_result($query);
$this->close();
return $result;
}
/**
*@param string $sql
*@return array
**/
public function dickFetch($sql,$type='assoc'){
$fetch_type = 'mysql_fetch_'.$type;
$query = $this->query($sql);
$rows=array();
while ($row=$fetch_type($query)) {
$rows[]=$row;
}
$this->free_result($query);
$this->close();
return $rows;
}
/**
*取得insert 最后一次的ID
*@param string $sql
**/
public function insert_id(){
return mysql_insert_id($this->link);
}
/**
*释放数据库对象资源
**/
public function free_result($query){
return mysql_free_result($query);
}
/**
*关闭数据库连接
**/
public function close(){
if($this->pconnect === 0) return mysql_close($this->link);
}
/**
* 整数安全处理,仅返回大于等于0的整数
*@param int
*@return int
* */
public function numeric(& $variint){
if (!isset ($variint))
return 0;
if (!is_numeric($variint))
return 0;
//首字符0处理
$str_len = strlen($variint);
for ($i = 0; $i < $str_len; $i++) {
if ($variint[$i] != '0')
break;
}
if ($i > 0 && $variint > 0) {
$variint = substr($variint, $i, $str_len);
$str_len = strlen($variint);
}
//数字安全处理
if ($str_len > 0) {
if (!preg_match("/^[0-9]+$/", $variint)) {
return 0;
} else {
$variint = substr($variint, 0, 10);
//兼容MYSQL中INT无符号最大值4294967295
$variint = ($variint > 4294967295) ? 4294967295 : $variint;
return $variint;
}
} else {
return 0;
}
}
/**
*返回mysql error
**/
public function error() {
return (($this->link) ? mysql_error($this->link) : mysql_error());
}
/**
*返回mysql errno
**/
public function errno() {
return intval(($this->link) ? mysql_errno($this->link) : mysql_errno());
}
/**
*写入SQL错误日志
*@param string
*@param string type
**/
public function write_log($message='',$type='date'){
if(empty($message))return false;
if(!in_array($type, array('date','month')))return false;
if(!is_dir($this->log_file)){
mkdir($this->log_file);
}
switch ($type) {
case 'month':
$file = $this->log_file.date('Y-m').'.log';
break;
default:
$file = $this->log_file.date('Y-m-d').'.log';
break;
}
if(!file_exists($file)){
file_put_contents($file,'');
}
if(!is_readable($file)){
$this->halt($file.'- 系统无权限读操作!');
}
if(!is_writable($file)){
$this->halt($file.'- 系统无权限写操作!');
}
$contents = file_get_contents($file);
$add_message = ' -Error:'.$this->error().' -Errno:'.$this->errno();
file_put_contents($file, $contents.$message.$add_message."/n");
}
/**
*终止程序
*@param str $message
*@return print
**/
public function halt($message='',$sql=''){
if($this->debug===1){
$error_get_last = error_get_last();
if($message) {
$errmsg = "<b>System info</b>: $message/n/n";
}
$errmsg .= "<b>Time</b>: ".date('Y-m-d H:i:s')."/n";
$errmsg .= "<b>Script</b>: ".$error_get_last['file']."/n/n";
if($sql) {
$errmsg .= "<b>SQL</b>: ".htmlspecialchars($sql)."/n";
}
$errmsg .= "<b>Error</b>: ".$this->error()."/n";
$errmsg .= "<b>Errno.</b>: ".$this->errno();
echo "</table></table></table></table></table>/n";
echo "<p style=/"font-family: Verdana, Tahoma; font-size: 11px; background: #FFFFFF;/">";
echo nl2br($errmsg);
exit();
}
}
/**
*程序测试打印
*@param string
*@return print
**/
public function prf($param){
echo '<pre>';
print_r($param);
echo '</pre>';
exit;
}
}
#################################################
####测试程序
####
##################################################
error_reporting(E_ALL);
header('Content-type:text/html;charset=utf-8');
date_default_timezone_set('Asia/Shanghai');
$config = array(
'host' => '192.168.2.1',
'username' => 'root',
'password' => '',
'dbname' => 'test',
);
$db = new Dick_Db((object)$config);
$db ->pconnect = 1;
$sql = 'SELECT * FROM t1';
$db->prf($db->dickFetch($sql));
?>
1
CI框架连接数据库配置操作以及多数据库操作
09-05
2
asp 简单读取数据表并列出来 ASP如何快速从数据库读取大量数据
05-17
3
C语言关键字及其解释介绍 C语言32个关键字详解
04-05
4
C语言中sizeof是什么意思 c语言里sizeof怎样用法详解
04-26
5
PHP中的魔术方法 :__construct, __destruct , __call, __callStatic,__get, __set, __isset, __unset , __sleep,
09-05
6
将视频设置为Android手机开机动画的教程
12-11
7
PHP中的(++i)前缀自增 和 (i++)后缀自增
09-05
8
常用dos命令及语法
09-27
PHP中include和require区别之我见
2014-09-05
最简单的asp登陆界面代码 asp登陆界面源代码详细介绍
2017-04-12
php递归返回值的问题
2014-09-05
如何安装PHPstorm并配置方法教程 phpstorm安装后要进行哪些配置
2017-05-03
单片机编程好学吗?单片机初学者怎样看懂代码
2022-03-21
PHP 教程之如何使用BLOB存取图片信息实例
2014-09-05
零基础的初学者怎样学习java,或者应该先学什么?
2022-03-21
学ug编程如何快速入门?
2022-03-17
PHP数组函数array
2014-09-05
学习使用C语言/C++编程的7个步骤!超赞~
2022-03-20
球球大作战汉化版下载v19.7.1 安卓版
其它手游 170.54MB
下载
葫芦侠三楼最新破解版下载v4.4.0.6 安卓版
其它手游 34.82MB
下载
葫芦侠7楼破解版免费下载v4.4.0.6安卓最新版
其它手游 34.82MB
下载
葫芦侠八楼免费版下载v4.4.0.6安卓版
其它手游 34.82MB
下载
葫芦侠3楼破解版免费下载v4.4.0.6安卓手机版
其它手游 34.82MB
下载
像素漫斗抱歉,“八神庵”是特指游戏角色的专有名词,不存在符合要求的常用同义词近义词。下载v1.00安卓版
其它手游 206.87MB
下载
葫芦侠4楼破解版游戏修改器下载v4.4.0.6安卓免费版
其它手游 34.82MB
下载
末日餐厅安卓版下载v1.35安卓版
其它手游 73.98MB
下载葫芦侠十楼免费破解版下载v4.4.0.6安卓版
下载
葫芦侠8楼最新破解版下载v4.4.0.6安卓版
下载
猫娘乐园世界连结正版下载v1.9.1 安卓版
下载
像素漫斗全员下载v1.00安卓版
下载
葫芦侠8楼手机版下载v4.4.0.6安卓版
下载
末日餐厅正版官网入口下载v1.35安卓版
下载
我的汉克狗正版下载v26.4.1.48473 安卓版
下载
像素漫斗u鼬神最新版本下载v1.00安卓版
下载