class dbLink //数据库查询的类 { var $dBaseLink; //数据库连接指针 var $dBase; function dbLink($base="") //构造函数 //$base 为选择数据库名称 { $this->dBaseLink=@mysql_connect("host","user","password"); if(!$this->dBaseLink) die($this->dbError("1")); if($base!="") $this->dbChange($base); } function dbClose() //关闭数据库连接 { mysql_close($this->dBaseLink); } function dbError($n,$sql="") //输出错误信息,并退出程序 { $dbErrorCode=array( 1 => "不能连接到数据库", 1004 => DB_ERROR_CANNOT_CREATE, 1005 => DB_ERROR_CANNOT_CREATE, 1006 => DB_ERROR_CANNOT_CREATE, 1007 => "对象已经存在,不能完成创建操作", 1008 => "不能完成删除操作", 1046 => DB_ERROR_NODBSELECTED, 1050 => DB_ERROR_ALREADY_EXISTS, 1051 => DB_ERROR_NOSUCHTABLE, 1054 => "所检索的字段不存在", 1062 => DB_ERROR_ALREADY_EXISTS, 1064 => DB_ERROR_SYNTAX, 1100 => DB_ERROR_NOT_LOCKED, 1136 => DB_ERROR_VALUE_COUNT_ON_ROW, 1146 => "所检索的数据表不存在", 1049 => "所选择的数据库不存在" ); echo "<div style='background-color:#dddddd;color:#000000;font-size:9pt;width=400' align=center>错误 $n :".$dbErrorCode[$n]."<BR>".$sql."</div>"; } function dbChange($base) //改变当前数据库 { $this->dBase=$base; @mysql_select_db($base,$this->dBaseLink); if($msg=mysql_errno($this->dBaseLink)) die($this->dbError($msg)); } function dbQuery($sql,$base="",$type=0) //对指定数据库进行访问 //$sql为SQL语句 //$base为访问的数据库名,如果没有则使用上次使用的 //$type为返回数组格式,0返回name=>value形式,1返回value格式 { if($base!="" || $this->dBase!=$base) $this->dbChange($base); $result=@mysql_query($sql,$this->dBaseLink); if($msg=mysql_errno($this->dBaseLink)) die($this->dbError($msg,$sql)); @$num=mysql_num_rows($result); if($num==0) $rtArray=""; else { for($i=0;$i<$num;$i ) $rtArray[$i]=($type==0)?mysql_fetch_array($result):mysql_fetch_row($result); } @mysql_free_result($result); return $rtArray; } function dbCountRecords($table,$where="",$base="",$index="id") //统计表中记录的数目 //$table 操作的数据表名称 //$where 完整的where子句 //$base 操作的数据库名称 //$index 操作所使用的索引字段 { if($base!="" || $this->dBase!=$base) $this->dbChange($base); $result = mysql_query("select count(".$index.") as 'num' from $table ".$where,$this->dBaseLink); @$num = mysql_result($result,0,"num"); @mysql_free_result($result); return $num; } function dbIo($sql,$base="") //无返回值的SQL操作,例如insert操作,返回新插入的id,update和delete无返回值 { if($base!="" || $this->dBase!=$base) $this->dbChange($base); $result=@mysql_query($sql,$this->dBaseLink); @mysql_free_result($result); return mysql_insert_id($this->dBaseLink); } function dbFieldList($table,$base) //字段信息列表 { $pt = @mysql_list_fields($base,$table); if($msg=mysql_errno($this->dBaseLink)) die($this->dbError($msg)); $n=mysql_num_fields($pt); for($i=0;$i<$n;$i ) { $name = mysql_field_name($pt,$i); $type = mysql_field_type($pt,$i); $len = mysql_field_len($pt,$i); $rt[$i]=array("name" => $name, //字段名称 "type" => $type, //字段类型 "len" => $len); //字段长度 } return $rt; } function dbTableList($basename) //数据库basename的表信息 { $result=mysql_list_tables($basename,$this->dBaseLink); $rt=mysql_fetch_array($result); @mysql_free_result($result); return $rt; } }