<?php
class mysqldb
{
	private $linkid= NULL;
	public  $version='';
	function __construct($hostname,$username,$password,$db_name,$charset)
	{
		$this->mysqldb($hostname,$username,$password,$db_name,$charset);
	}
	//数据库连接
	function mysqldb($hostname,$username,$password,$db_name,$charset)
	{
		$this->linkid=mysql_connect($hostname,$username,$password);
		if(!$this->linkid)
		{
			echo "服务器连接失败";
		}else 
		{
			$lk=mysql_select_db($db_name,$this->linkid) or die("数据库连接失败");
			$this->version = mysql_get_server_info($this->linkid);
			if ($this->version > '5.0.1')
            {
                mysql_query("SET sql_mode=''", $this->linkid);
            }
			if($lk)
			{
				if($charset)
				{
					mysql_query("SET NAMES '$charset'");
				}
			}
		}
		
	}
	//执行sql语句
	function query($sql)
	{
		return mysql_query($sql,$this->linkid);
	}
	//获取数据记录数
	function num_rows($res)
	{
		return mysql_num_rows($res);
	}
	//取一行做关联数组	
	function fetch_array($res,$type=MYSQLASSOC)
	{
		return mysql_fetch_array($res,$type);	
	}
	//取一行作为枚举数组
	function fetch_row($res)
	{
		return mysql_fetch_row($res);	
	}
	//取得取得结果集中字段的数目
	function num_fields($res)
	{
		return mysql_num_fields($res);
	}
	//从结果集中取得列信息并作为对象返回
	function fetch_field($res)
	{
		return mysql_fetch_field($res);
	}
	//取得全部的数据
	function getAll($sql)
	{
		$res=$this->query($sql);
		if($res!==false)
		{
			$arr=array();
			while ($rs=mysql_fetch_array($res,MYSQL_ASSOC))
			{
				$arr []=$rs;
			}
			return $arr;
		}else
		 {
			return false;
			
		}
	}

	//取得一个字段
	function getOne($sql)
	{
	
		$res=$this->query($sql);
		if($res !==false)
		{
			$rs=mysql_fetch_row($res);
			if($rs!==false)
			{
				return $rs[0];
			}else
			{
				return '';
			}
		}
		else {
			return false;
		}
		
	}
	
	
	//取得一行记录数
	 function getRow($sql)
    {
        $res = $this->query($sql);
        if ($res !== false)
        {
            return mysql_fetch_array($res,MYSQL_ASSOC);
        }
        else
        {
            return false;
        }
    }
    //取得一列记录数
    function getCols($sql)
	{
		$res=$this->query($sql);
		if($res!==false)
		{
			$arr=array();
			while($rs=mysql_fetch_array($res))
			{
				$arr[]=$rs[0];
			}
			return $arr;
		}else
		{
			return false;
		}
	}
	//查看影响到得记录数
	function affected_rows()
	{
		return  mysql_affected_rows($this->linkid);
	}
	
	//查看最近一次添加数据的id
	function insert_id()
    {
        return mysql_insert_id($this->linkid);
    }
	//查看mysql错误
     function error()
    {
        return mysql_error($this->linkid);
    }
	//查看mysql 错误号码
    function errno()
    {
        return mysql_errno($this->linkid);
    }
	//释放内存
	function free_result()
	{
		return mysql_free_result($this->linkid);
	}
	
	
	/*
 *@自动添加数据函数
 *@$table 表名
 *@$arr 字段库  array("title",array("content",int))
 *@  array(字段,类型) 
 *@ 类型说明 
 html--允许html 
 unhtml-不允许html 
 int --int类型
 float -- float 类型
 */
 
 //自动插入数据函数
 function autoInsert($table,$arr=array(),$method='post')
 {
  $sql="insert into ".DB_TBLPRE."$table set  ";
  $var="";
  print_r($arr);
  if(empty($arr)) $arr=$_POST?$_POST:$_GET;
  if(empty($arr)) return false;
  $ct=count($arr)-1;
  foreach($arr as $k=> $v)
  {
   $vtype="unhtml";
   if(is_array($v))
   {   
    $vtype=@$v[1];
    $v=$v[0];
   }
   if($method=='post')
   {
    $_POST[$v]=isset($_POST[$v])?trim($_POST[$v]):"";
    if(is_int($_POST[$v]))
    {
     $_POST[$v]=intval($_POST[$v]);
    }elseif(is_float($_POST[$v]))
    {
     $_POST[$v]=floatval($_POST[$v]);
    }elseif(is_string($_POST[$v]))
    {
     //等于1 为保存html 默认不保存html
     if($vtype=="unhtml")
     {
      $_POST[$v]=htmlspecialchars($_POST[$v]);
     }elseif($vtype=="int")
     {
      $_POST[$v]=@intval($_POST[$v]);
     }elseif($vtype=='float')
     {
      $_POST[$v]=@floatval($_POST[$v]);
     }
    
    }
    
    
    $var.= "$v = '$_POST[$v]' ".($k<$ct?",":"");
   }else
   {
    $_GET[$v]=isset($_GET[$v])?trim($_GET[$v]):"";
    if(is_int($_GET[$v]))
    {
     $_GET[$v]=intval($_GET[$v]);
    }elseif(is_float($_GET[$v]))
    {
     $_GET[$v]=floatval($_GET[$v]);
    }elseif(is_string($_GET[$v]))
    {
     //等于1 为保存html 默认不保存html
     if($vtype=='unhtml')
     {
      $_GET[$v]=htmlspecialchars($_GET[$v]);
     }elseif($vtype=='int')
     {
      $_GET[$v]=intval($_GET[$v]);
     }elseif($vtype=='float')
     {
      $_GET[$v]=floatval($_GET[$v]);
     }
    
    }
    $var .="$v= '$_GET[$v]' ".($k<$ct?",":"");
   }
  }
  $sql.=$var;
  
  $this->query($sql);
  return $this->insert_id();
 }
 
 
 /**
 @自动更新数据函数
 *@$table 表名
 *@$arr 字段库  array("title",array("content",int))
 *@  array(字段,类型) 
 *@ 类型说明 
 html--允许html 
 unhtml-不允许html 
 int --int类型
 float -- float 类型
 ** $where  条件数组 类型同 $arr一样
 *$method  表单提交的方式
 */
 
 function autoUpdate($table,$arr=array(),$where=array(),$method='post')
 {
  $sql="update ".DB_TBLPRE."$table set  ";
  $var=$w="";
  if(empty($arr)) $arr=$_POST?$_POST:$_GET;
  if(empty($arr)) return false;
  $ct=count($arr)-1;
  foreach($arr as $k=> $v)
  {
   $vtype="unhtml";
   if(is_array($v))
   {   
    $vtype=@$v[1];
    $v=$v[0];
   }
   if($method=='post')
   {
    $_POST[$v]=isset($_POST[$v])?trim($_POST[$v]):"";
    if(is_int($_POST[$v]))
    {
     $_POST[$v]=intval($_POST[$v]);
    }elseif(is_float($_POST[$v]))
    {
     $_POST[$v]=floatval($_POST[$v]);
    }elseif(is_string($_POST[$v]))
    {
     //等于1 为保存html 默认不保存html
     if($vtype=="unhtml")
     {
      $_POST[$v]=htmlspecialchars($_POST[$v]);
     }elseif($vtype=="int")
     {
      $_POST[$v]=@intval($_POST[$v]);
     }elseif($vtype=='float')
     {
      $_POST[$v]=@floatval($_POST[$v]);
     }
    
    }
    
    
    $var.= "$v = '$_POST[$v]' ".($k<$ct?",":"");
   }else
   {
    $_GET[$v]=isset($_GET[$v])?trim($_GET[$v]):"";
    if(is_int($_GET[$v]))
    {
     $_GET[$v]=intval($_GET[$v]);
    }elseif(is_float($_GET[$v]))
    {
     $_GET[$v]=floatval($_GET[$v]);
    }elseif(is_string($_GET[$v]))
    {
     //等于1 为保存html 默认不保存html
     if($vtype=='unhtml')
     {
      $_GET[$v]=htmlspecialchars($_GET[$v]);
     }elseif($vtype=='int')
     {
      $_GET[$v]=intval($_GET[$v]);
     }elseif($vtype=='float')
     {
      $_GET[$v]=floatval($_GET[$v]);
     }
    
    }
    $var .="$v= '$_GET[$v]' ".($k<$ct?",":"");
   }
  }
  $sql.=$var;
  //解析 where
  $ct=count($where)-1;
  if(!empty($where))  $w=" where ";
  foreach($where as $k=> $v)
  {
   $vtype="unhtml";
   if(is_array($v))
   {   
    $vtype=@$v[1];
    $v=$v[0];
   }
   if($method=='post')
   {
    $_POST[$v]=isset($_POST[$v])?trim($_POST[$v]):"";
    if(is_int($_POST[$v]))
    {
     $_POST[$v]=intval($_POST[$v]);
    }elseif(is_float($_POST[$v]))
    {
     $_POST[$v]=floatval($_POST[$v]);
    }elseif(is_string($_POST[$v]))
    {
     //等于1 为保存html 默认不保存html
     if($vtype=="unhtml")
     {
      $_POST[$v]=htmlspecialchars($_POST[$v]);
     }elseif($vtype=="int")
     {
      $_POST[$v]=@intval($_POST[$v]);
     }elseif($vtype=='float')
     {
      $_POST[$v]=@floatval($_POST[$v]);
     }
    
    }
    
    
    $w.= "$v = '$_POST[$v]' ".($k<$ct?" and ":"");
   }else
   {
    $_GET[$v]=isset($_GET[$v])?trim($_GET[$v]):"";
    if(is_int($_GET[$v]))
    {
     $_GET[$v]=intval($_GET[$v]);
    }elseif(is_float($_GET[$v]))
    {
     $_GET[$v]=floatval($_GET[$v]);
    }elseif(is_string($_GET[$v]))
    {
     //等于1 为保存html 默认不保存html
     if($vtype=='unhtml')
     {
      $_GET[$v]=htmlspecialchars($_GET[$v]);
     }elseif($vtype=='int')
     {
      $_GET[$v]=intval($_GET[$v]);
     }elseif($vtype=='float')
     {
      $_GET[$v]=floatval($_GET[$v]);
     }
    
    }
    $w .="$v= '$_GET[$v]' ".($k<$ct?" and ":"");
   }
  }
  
  $sql.=$w;
  $this->query($sql);
 }

        

}	




?>