dosql.class.php 返回列表
<?php
/**
* ݿ--Űv2.0
* by vking goto999@126.com
* 2010-02-12
* 简单介绍:主要优点简化查询操作,使其返回需要的字段
* $db=new dbsql($host,$dbuser,$dbpass,$dbname);
* ʾ $db->set_error_info(true);Ĭʾ
* 建立持续连接 $db->set_connect_type(true);默认为connect
* ÷ $db->set_results_type("assoc");ĬassocΪ,Ϊobjectض
* 获取连接信息 $db->get_info();
* лݿ $db->select_db($dbname);
* 获取一个记录 $db->dosql($sql,0);
* 获取一行记录 $db->dosql($sql,1);
* 获取查询记录行数 $db->dosql($sql,"NUM_ROWS");
* 获取一列记录 $db->dosql($sql,"tagname");tagname要获取的字段名称
* 获取一组记录(返回二唯数组或对象)$db->dosql($sql);
* 获取数据表字段 (返回一维数组)$db->dosql($tablename);
*/
class dbsql{
private $_link;
private $_dbserver;
private $_dbuser;
private $_dbpass;
private $_dbname;
private $_error=true;//
private $_connect_type=false;//false=>connect
private $_argsnum;
private $_res;
private $_retult_type;//Ĭassoc object=>obj
function __construct(){
$this->_result_type="assoc";
$this->_argsnum=func_num_args();
$args=func_get_args();
switch ($this->_argsnum){
case 0 :
if(!$this->_link=mysql_connect()){
$this->error();
}
break;
case 1 :
$this->_dbserver=$args[0];
if(!$this->_link=mysql_connect($this->_dbserver)){
$this->error();
}
break;
case 2 :
$this->_dbserver=$args[0];
$this->_dbuser=$args[1];
if(!$this->_link=mysql_connect($this->_dbserver,$this->_dbuser)){
$this->error();
}
break;
case 3 :
$this->_dbserver=$args[0];
$this->_dbuser=$args[1];
$this->_dbpass=$args[2];
if(!$this->_link=mysql_connect($this->_dbserver,$this->_dbuser,$this->_dbpass)){
$this->error();
}
break;
default:
$this->_dbserver=$args[0];
$this->_dbuser=$args[1];
$this->_dbpass=$args[2];
$this->_dbname=$args[3];
if($this->_connect_type){
if(!$this->_link=mysql_pconnect($this->_dbserver,$this->_dbuser,$this->_dbpass)){
$this->error();
}
}else{
if(!$this->_link=mysql_connect($this->_dbserver,$this->_dbuser,$this->_dbpass)){
$this->error();
}
}
mysql_select_db($this->_dbname,$this->_link);
}
}
function select_db(){
$args=func_get_args();
if(isset($args[1])){
if(!mysql_select_db($args[0],$args[1])){
$this->error();
}
}else{
if(!mysql_select_db($args[0])){
$this->error();
}
}
}
function set_connect_type(){
$args=func_get_args();
$this->_connect_type=$args[0];
}
function set_error_info(){
$args=func_get_args();
$this->_error=$args[0];
}
function set_result_type(){
$args=func_get_args();
$this->_result_type=$args[0];
}
function error(){
if(!$this->_error){
return 0;
}
$args=func_get_args();
$err=array(
1005=>'创建表失败',
1006=>'创建数据库失败',
1007=>'ݿѴڣݿʧ',
1008=>'ݿⲻڣɾݿʧ',
1009=>'不能删除数据库文件导致删除数据库失败',
1010=>'不能删除数据目录导致删除数据库失败',
1011=>'ɾݿļʧ',
1012=>'不能读取系统表中的记录',
1020=>'记录已被其他用户修改',
1021=>'Ӳʣռ䲻㣬ӴӲ̿ÿռ',
1022=>'关键字重复,更改记录失败',
1023=>'关闭时发生错误',
1024=>'读文件错误',
1025=>'更改名字时发生错误',
1026=>'дļ',
1032=>'记录不存在',
1036=>'ݱֻģܶ',
1037=>'ϵͳڴ治㣬ݿ',
1038=>'ڴ治㣬',
1040=>'ѵݿӴݿ',
1041=>'ϵͳڴ治',
1042=>'Ч',
1043=>'Ч',
1044=>'当前用户没有访问数据库的权限',
1045=>'不能连接数据库,用户名或密码错误',
1046=>'ݿⲻ',
1048=>'ֶβΪ',
1049=>'ݿⲻ',
1050=>'ݱѴ',
1051=>'ݱ',
1054=>'ֶβ',
1065=>'ЧSQL䣬SQLΪ',
1081=>'不能建立Socket连接',
1114=>'ݱκμ¼',
1116=>'打开的数据表太多',
1129=>'ݿ쳣ݿ',
1130=>'连接数据库失败,没有连接数据库的权限',
1133=>'ݿû',
1141=>'当前用户无权访问数据库',
1142=>'当前用户无权访问数据表',
1143=>'当前用户无权访问数据表中的字段',
1146=>'ݱ',
1147=>'δûݱķȨ',
1149=>'SQL',
1158=>'ֶ״',
1159=>'ʱ״',
1160=>'д״',
1161=>'дʱ״',
1062=>'ֵֶظʧ',
1064=>'SQL',
1169=>'ֵֶظ¼¼ʧ',
1177=>'打开数据表失败',
1180=>'ύʧ',
1181=>'回滚事务失败',
1203=>'当前用户和数据库建立的连接已到达数据库的最大连接数,请增大可用的数据库连接数或重启数据库',
1205=>'加锁超时',
1211=>'当前用户没有创建用户的权限',
1216=>'Լʧܣӱ¼ʧ',
1217=>'Լʧܣɾ¼ʧ',
1226=>'当前用户使用的资源已超过所允许的资源,请重启数据库或重启服务器',
1227=>'Ȩ㣬Ȩд˲',
1235=>'MySQL版本过低,不具有本功能'
);
echo "<font color=red>错误端口:".mysql_errno($this->_link)."---".$err[mysql_errno($this->_link)]."<br>";
echo "错误信息:".mysql_error($this->_link)."<br>";
if(isset($args[0])){
echo "出错语句:".$args[0]."<br></font>";
}
}
function query($sql){
if(!$this->_res=mysql_query($sql,$this->_link)){
$this->error($sql);
}
}
function getRowsNum(){
if(@func_get_arg(0)){
$this->query(func_get_arg(0));
}
return @mysql_num_rows($this->_res);
}
function is_sql(){
$sql=trim(func_get_arg(0));
if(eregi(" ",$sql) && strlen($sql)>10){
return true;
}
return false;
}
function dosql(){
$args=func_get_args();
if($this->is_sql($args[0])){
$this->query($args[0]);
}else{
$fields=@mysql_list_fields($this->_dbname,$args[0],$this->_link);
if(!$columns = @mysql_num_fields($fields)){
$this->error($sql);
}else{
for ($i = 0; $i < $columns; $i++) {
$fields_info[]=@mysql_field_name($fields, $i);
}
return $fields_info;
}
}
if(eregi("select|show",substr($args[0],0,10))){
switch (count($args)){
case 2:
if($args[1]==="NUM_ROWS"){
return $this->getRowsNum();
}
if($args[1]===0){
return mysql_result($this->_res,0,0);
}
if($args[1]===1){
$do="mysql_fetch_{$this->_result_type}";
return @$do($this->_res);
}
if(is_string($args[1])){
$num=$this->getRowsNum();
for($i=0;$i<$num;$i++){
$arr[$i]=@mysql_result($this->_res,$i,$args[1]);
}
return $arr;
}
default:
$do="mysql_fetch_{$this->_result_type}";
while($xx=@$do($this->_res)){
$row[]=$xx;
}
@mysql_free_result($this->_res);
return empty($row)?null:$row;
}
}else{//query
if(eregi("insert",substr($args[0],0,10))){
return mysql_insert_id($this->_link);
}else{
return mysql_affected_rows($this->_link);
}
}
}
function getinfo(){
$arr['Author']="vking";
$arr['Email']="goto999@126.com";
$arr['Version']="2.0.0";
$arr['DevelopDate']="2012-02-12";
$arr['HOST']=mysql_get_host_info();
$arr['SERVER']=mysql_get_server_info();
$arr['CLIENT']=mysql_get_client_info();
$arr['PROTO']=mysql_get_proto_info($this->_link);
$res=$this->dosql("show variables like 'character\_set\_%'");
for($i=0;$i<count($res);$i++){
$p[$res[$i]['Variable_name']]=$res[$i]['Value'];
}
$arr['CharSet']=$p;
return $arr;
}
function __destruct(){
@mysql_close($this->_link);
}
}
?>
Add New Content