您现在的位置是: 首页 >  技术分享 > 

DB类基本操作
叶子 2015-12-25 12:11:19

[注明:]闲暇时写的一个DB类,主要是最基础的CURD操作,还可以自行做一些扩展。我只写得是一些基本的用法,封装一些常用的方法,逻辑性比较强的业务还得在日后练习中加强。下面的方法,我已作相应的测试。

db.config.php db配置文件

<?php
/** 
 * 数据库配置信息
 * db.config.php
 * @author   lei.hongye@xcar.com.cn
 * @copyright  Copyright 2015 
 */ 
define('DB_HOST', 'localhost');//数据库地址
define('DB_USER', 'root');//数据库用户名
define('DB_PWD', '');//数据库密码
define('DB_NAME', 'message');//数据库名
define('DB_CHARSET', 'gbk');//数据库字符码
define('TIMEZONE', 'PRC');//数据库时区设置

db.class.php db类操作方法

<?php 
/**
 * DB类【主要操作数据库增删改查】
 * ==============================================
 * 版权所有 2010-2015 
 * ----------------------------------------------
 * 这不是一个自由软件,未经授权不许任何使用和传播。
 * ==============================================
 * @date: 2015-12-25
 * @author: lei.hongye
 * @desc:此类只是空闲时候写得一些简单的DB操作
 */
require_once './db.config.php';
date_default_timezone_set(TIMEZONE);//设置时区
class DB{
	private $db_host;//数据库地址
	private $db_user;//数据库用户名
	private $db_pwd;//数据库密码
	private $db_port;//数据库端口号
	private $db_name;//数据库名
    private $db_table;//数据库表名
    private $db_connect_link;//数据库连接
	
	/**
	 * db类的构造函数
	 * Enter description here ...
	 *
	 */
    public function __construct($db_host=DB_HOST,$db_user=DB_USER,$db_pwd=DB_PWD,$db_name=DB_NAME,$db_port='3306')
    {
    	$this->db_host = $db_host;
    	$this->db_user = $db_user;
    	$this->db_pwd =  $db_pwd;
    	$this->db_name = $db_name;
    	$this->db_port = $db_port;
    }
    /**
     * @todo 打开数据库连接
     * Enter description here ...
     */
    private function db_connect()
    {
    	$this->db_connect_link = mysql_connect($this->db_host,$this->db_user,$this->db_pwd);
    	mysql_select_db($this->db_name);
    	mysql_query('set names gbk');
    }
    
    /**
     * @todo 关闭数据库连接
     * Enter description here ...
     */
    private function db_close()
    {
    	mysql_close($this->db_connect_link);
    }
    
    /**
     * @todo 通过sql执行语句
     * Enter description here ...
     */
    public function get_sql_data($sql){
    	$this->db_connect();
    	$data_list = array();
    	$res = mysql_query($sql,$this->db_connect_link);
    	while ($obj = mysql_fetch_assoc($res))
    	{
    		if ($obj){
    			$data_list[] = $obj;
    		}
    	}
    	$this->db_close();
    	return $data_list;
    }
    /**
     * @todo 数据库添加数据 
     * @param $table 表名
     * @param $data array()
     */
    public function insertData($table,$data)
    {
    	if(empty($table)){ die('INSERT Empty TableName!');}
		 if(empty($data)){ die('INSERT '.$tableName.' Empty Data');}
    	 $sql = '';
    	 $sql = "insert into {$table}";
    	 $addsql = $this->parseArray($data);
    	 if(!empty($addsql)){
    	 	$this->db_connect();
    	    $this->query($sql.$addsql);
    	    $insertid = mysql_insert_id($this->db_connect_link);
    	    return $insertid;
    	    $this->db_close();
    	 }else{
    	 	mysql_errno();
    	 }
    }
    
    /**
     * @todo 数据库删除数据
     * @author tianzhukui@126.com
     * @param $where array() where条件
     */
    public function delData($table,$where)
    {
        if (empty($table)){ die('Delete Empty TalbeName');}
        if (empty($where)){
            die('参数不正确');
        }else {
            $sql = "DELETE FROM {$table} WHERE 1";
            if (is_array($where)){
                foreach ($where as $k=>$v) {
                    $sql .= " AND {$k} = '{$v}'";
                }
            }elseif (is_string($where)){
                $sql .= ' AND '. $where;
            }
            
        }
        return $this->query($sql);
    }
    
    /**
     * @todo 数据库更新数据
     * @param $table 表名
     * @param $data 操作的数据
     * @param $where 更新条件
     */
    public function updateDate($table,$data,$where)
    {
    	if (empty($table)){die('Update Empty TableName');}
    	if (!is_array($data)){die('插入数据格式错误');}
    	$sql = "UPDATE {$table} SET ";
    	foreach ($data as $k=>$v){
    	    $sql .= "{$k} = '$v',";
    	}
    	$sql = rtrim($sql,',');
    	$sql .= "WHERE 1 AND ";
    	if (is_array($where)){
    	    foreach ($where as $k=>$v){
    	        $sql .= " {$k} = '$v' AND ";
    	    }
    	    $sql = rtrim($sql,',');
    	}elseif (is_string($where)){
    	    $sql .= $where;
    	}
    	return $this->query($sql);
    	    	 
    }
    
    /**
     * @todo 解析数据:转义字符
     * 
     */
    public function parseData($value)
    {
    	if (is_string($value))
    	{
    		$value = addslashes($value);
    	}elseif (is_array($value))
    	{
    		$value = array_map(array($this,'parseValue'), $value);
    	}elseif (is_bool($value))
    	{
    		$value = !empty($value) ? '0' : '1';
    	}elseif (is_null($value))
    	{
    		$value = 'null';
    	}
    	return $value;
    }
    
    /**
     * @todo解析数组:生成sql
     * $type true:添加 false:update
     */
    public function parseArray($value=array(),$type='TRUE')
    {
    	$sql = '';
    	if (is_array($value))
    	{
    		if ($type){
    			$data = array();
    			$keys = join('`,`', array_keys($value));//获得数据的key值
    			$key_str = "(`".$keys."`)";
                $sql .= $key_str." VALUES ";
    			foreach ($value as $k=>$V){
    				$data [] = "'".$this->parseData($V)."'";
    			}
    			$new_data = join(',', $data);//将所得到的value值用逗号连接起来
    			$sql.= "(".$new_data.")";
    		}else{
    			$sql = "set ";
    			foreach ($value as $k=>$v){
    				$sql .= "`{$k}`='".$this->parseData($V)."' ,";
    			}
    			$sql = rtrim($sql,',');
    		}
    		
    	}
    	return $sql;
    }
    
    /**
     * @todo 执行update
     * @author lhy
     */
    public function query($sql) {
    	$this->db_connect();
    	$res = mysql_query($sql,$this->db_connect_link);
    	return $res;
    }
    
    
    
}

yezismile wechat
欢迎关注博主公众号
分享:

上一篇: 致2016年的自己

下一篇: js的函数类库

Copyright © 2023
www.yezismile.com All rights reserved. 京ICP备15029736号-1