《Mysql应用mysql仿asp的数据库操作类》要点: 本文介绍了Mysql应用mysql仿asp的数据库操作类,希望对您有用。如果有疑问,可以联系我们。
MYSQL入门<?php? class?MySQLDB? ??{? ????//MYSQL数据库操作类? ????//作者:熊毅? ????//版本:2.0(发行版)?? ????? 查询数据时Query后可以用GetValue得到相应的值,既可以是字段名也可以是已0开始的序号? 插入新值,先用AddNew后使用SetValue相应的字段名或序号和字段值,在用Update添加? 编辑时用Edit指定编辑记录的条件在使用SetValue,最后用Update添加? 在类使用过程中,sTName记录上次使用的数据库表名,当指定后可以直接使用,以后的操作默认在该表??
????//可以自由转载,修改请通知我scxy78@yeah.net? ????//转载请保留以上声明?
????????//上进行操作,当然也可以每次指定特殊的表进行操作? ????//nErr指示是否操作出错,sErr记录最后一次出错的错误代码,记录了明确的有哪个函数引起的错误? ????//错误之处请指正? ????//欢迎来信与我交流编程经验:scxy78@yeah.net? ????//我的CSDN:用户号:scxy;呢称:小熊,请多关照?
????//可以自由转载,修改请通知我scxy78@yeah.net? ????//转载请保留以上声明?
????var?$host="localhost";????????//主机名? ????var?$user="boot";???????????//用户名? ????var?$password="oaserver";???//用户密码? ????var?$linkid;?????????????????//连接值? ????var?$dbid;???????????????????//数据库选择的结果值? ????var?$sTName;??????????????????//指定当前操作的数据库表? ????var?$sErr;???????????????????//错误代码? ????var?$nErr;???????????????????//指示是否有错误存在,0无错误,1有错误? ????var?$nResult;????????????????//查询结果值? ????var?$aFName;?????????????????//保存FieldsName的数组? ????var?$nRows;??????????????????//查询结果中的行数? ????var?$nCols;??????????????????//查询结果中的列数? ????var?$aNew;???????????????????//添加在AddNew函数后的数据,以数组形式保存? ????var?$NewEdit;??????????????????//判断当前是否在进行添加操作,0表示没有,1表示在进行添加,2表示编辑? ????var?$sEditCon;???????????????//指定编辑记录的条件? ????var?$nOffset;????????????????//记录偏移量? ????var?$EOF;?????????????????????//标记是否到记录集尾? ????var?$sSQL;????????????????????//最后一条执行的SQL语句?
????//执行Update所要用到的全局变量? ????var?$sName;???????????????????//字段名? ????var?$sValue;??????????????????//字段值AddNew时用? ????var?$sEdit;???????????????????//字段值Edit时用?
????function?Initialize()? ????{? ??????$this->nErr=0;? ??????$this->NewEdit=0;? ??????$this->nResult=-1;? ??????$this->nCols=0;? ??????$this->nRows=0;? ??????$this->nOffset=0;? ??????$this->EOF=true;? ??????$this->sName="";? ??????$this->sValue="#@!";? ??????$this->sEdit="#@!";? ??????unset($this->aFName);? ??????unset($this->aNew);? ????}? ????function?MySqlDB($TableName="",$database="slt")??//构造函数? ????{? ??????$this->Initialize();? ??????$this->sTName=$TableName;? ??????$this->linkid=mysql_connect($host,$user,$password);? ??????if(!$this->linkid)? ??????{? ????????$this->nErr=1;? ????????$this->sErr="MySqlDB:数据库连接出错,请启动服务!";? ????????return;? ??????}? ??????$this->dbid=mysql_select_db($database);? ??????if(!$this->dbid)? ??????{? ????????$this->nErr=1;? ????????$this->sErr="MySqlDB:选择的数据库".$database."不存在!";? ????????return;? ??????}? ????}?
????function?IsEmpty($Value)? ????{? ????????????if(is_string($Value)&&empty($Value))? ???????????????return?true;? ????????????return?false;? ????}?
????function?Destroy()??????????//数据清除处理? ????{? ??????mysql_query("commit");? ??????mysql_close();? ????}?
????function?PrintErr()? ????{? ??????if($this->nErr==1)? ??????{? ????????echo($this->sErr."<br><br>");? ??????}? ??????else? ??????{? ????????echo("没有错误<br><br>");? ??????}? ????}?
????????function?Execute($SQL)??//直接执行SQL语句? ??????????{? ????????????????if(empty($SQL))? ??????????????????{? ????????????????????????$this->nErr=1;? ????????????????????????$this->sErr="Execute:执行语句不能为空!";? ????????????????????????return?false;? ??????????????????}? ?????????????????$this->sSQL=$SQL;? ??????????????????if(!mysql_query($SQL))? ??????????????????{? ??????????????????????????$this->nErr=1;? ??????????????????????????$this->sErr="Execute:SQL语句:".$SQL."<br>MySql错误:".mysql_error();? ??????????????????????????return?false;? ??????????????????}? ??????????????????return?true;? ??????????}?
????function?Query($TableName="",$SQL="*",$Condition="",$Order="",$Sequenc="")?//在数据库里执行查询? ????{? ??????$this->Initialize();? ??????if(!empty($TableName))? ????????$this->sTName=$TableName;? ??????$strSQL="select?".$SQL."?from?".$this->sTName;? ??????if(!empty($Condition))? ????????$strSQL=$strSQL."?where?".$Condition;? ??????if(!empty($Order))? ????????$strSQL=$strSQL."?order?by?".$Order;? ??????if(!empty($Sequenc))? ????????$strSQL=$strSQL."?".$Sequenc;? ??????????$this->sSQL=$strSQL;? ??????if(!$this->nResult=mysql_query($strSQL))? ??????{? ????????$this->nErr=1;? ????????$this->sErr="Query:SQL语句:".$strSQL."<br>MySql错误:".mysql_error()."<br>";? ????????return;? ??????}? ??????$this->nOffset=0;? ??????$this->nRows=mysql_num_rows($this->nResult);? ??????$this->nCols=mysql_num_fields($this->nResult);? ??????????if($this->nRows>0)? ??????????????????$this->EOF=false;? ??????????else? ??????????????????$this->EOF=true;? ??????unset($this->aFName);? ??????$this->aFName=array();? ??????for($i=0;$i<$this->nCols;$i++)? ?????????$this->aFName[$i]=strtolower(mysql_field_name($this->nResult,$i));? ????}?
????????function?MoveNext()? ??????????{? ????????????????if($this->EOF)? ??????????????????{? ????????????????????????$this->nErr=1;? ????????????????????????$this->sErr="MoveNext:已经移到记录集末尾!";? ????????????????????????return;? ??????????????????}? ????????????????$this->nOffset++;? ????????????????if($this->nOffset>=$this->nRows)? ????????????????????????$this->EOF=true;? ??????????}?
?????function?MoveTo($Offset)? ?????{? ????????if(empty($Offset))? ????????{? ??????????$this->nErr=1;? ??????????$this->sErr="MoveTo:必须指定偏移量!?";? ??????????return;? ????????}?
????????if(!$this->nResult)? ????????{? ??????????$this->nErr=1;? ??????????$this->sErr="MoveTo:请先执行查询:Query";? ??????????return;? ????????}? ????????$this->nOffset=$Offset;? ?????}?
????//得到指定行的指定列的值,返回字符串? ????//如果不指定Offset将取得下一行的值? ????//如果不指定nFields将取得该行的值,并已数组形式返回? ????function?GetValue($nFields=-1,$Offset=-1)? ????{? ??????if($this->nResult==-1)? ??????{? ????????$this->nErr=1;? ????????$this->sErr="GetValue:请先执行Query()函数!";? ????????return;? ??????}? ??????if($Offset>-1)? ??????{? ????????????????$this->nOffset=$Offset;? ????????if($this->nOffset>=$this->nRows)? ????????{? ??????????$this->nErr=1;? ??????????$this->sErr="GetValue:所要求的偏移量太大,无法达到!";? ??????????return;? ????????}? ??????}? ???????????if(!@mysql_data_seek($this->nResult,$this->nOffset))? ????????????????{? ??????????????????$this->nErr=1;? ??????????????????$this->sErr="GetValue:请求不存在的记录!";? ??????????????????return;? ????????????????}? ??????$aResult=mysql_fetch_row($this->nResult);? ??????if(is_int($nFields)&&$nFields>-1)? ??????{? ????????if($nFileds>$this->nCols)? ????????{? ??????????$this->nErr=1;? ??????????$this->sErr="GetValue:所请求的列值大于实际的列值!";? ??????????return;? ????????}? ????????return?$aResult[$nFields];? ??????}? ??????????if(is_string($nFields))? ??????????{? ????????????????$nFields=strtolower($nFields);? ????????????for($i=0;$i<$this->nCols;$i++)? ????????????????{? ??????????????????if($this->aFName[$i]==$nFields)? ??????????????????????????break;? ????????????????}? ????????????????if($i==$this->nCols)? ??????????????????{? ????????????????????????$this->nErr=1;? ????????????????????????$this->sErr="GetValue:所请求的列不存在,请仔细检查!";? ????????????????????????return;? ??????????????????}? ??????????????????return?$aResult[$i];? ??????????}? ??????return?$aResult;? ????}?
????function?AddNew($TableName="")??//标志开始添加数据? ????{? ??????$this->Initialize();? ??????if(!empty($TableName))? ????????$this->sTName=$TableName;? ??????if($this->NewEdit>0)? ??????{? ????????$this->nErr=1;? ????????$this->sErr="AddNew:你正在对数据库进行添加或更新操作!";? ????????return;? ??????}? ??????if(empty($this->sTName))? ??????{? ????????$this->nErr=1;? ????????$this->sErr="AddNew:想要添加的数据库表为空,可以在构造时指定,也可在AddNew()时指定!";? ????????return;? ??????}? ??????unset($this->aNew);? ??????$this->aNew=array();? ??????$this->NewEdit=1;? ??????$strSQL="select?*?from?".$this->sTName;? ??????????$this->sSQL=$strSQL;? ??????if(!$this->nResult=mysql_query($strSQL))? ??????{? ????????$this->nErr=1;? ????????$this->sErr="AddNew:SQL语句:".strSQL."<br><br>MySql错误:".mysql_error();? ????????return;? ??????}? ??????$this->nCols=mysql_num_fields($this->nResult);? ??????unset($this->aFName);? ??????$this->aFName=array();? ??????for($i=0;$i<$this->nCols;$i++)? ?????????$this->aFName[$i]=strtolower(mysql_field_name($this->nResult,$i));? ????}?
????function?Edit($Condition="",$TableName="")??//对指定数据库表进行编辑? ????{? ??????????????????$this->Initialize();? ??????????????????if(!empty($TableName))? ??????????????????????????$this->sTName=$TableName;? ??????????????????$this->sEditCon=$Condition;? ??????????????????if(empty($this->sTName))? ??????????????????{? ??????????????????????????$this->nErr=1;? ??????????????????????????$this->sErr="Edit:在编辑前请先指定数据库表!";? ??????????????????????????return;? ??????????????????}? ??????????????????unset($this->aNew);? ??????????????????$this->aNew=array();? ??????????????????$this->NewEdit=2;? ??????????????????$strSQL="select?*?from?".$this->sTName;? ??????????????????$this->sSQL=$strSQL;? ??????????????????if(!$this->nResult=mysql_query($strSQL))? ??????????{? ?????????????$this->nErr=1;? ?????????????$this->sErr="Edit:SQL语句:".strSQL."<br><br>MySql错误:".mysql_error();? ?????????????return;? ??????????}? ??????????$this->nCols=mysql_num_fields($this->nResult);? ??????????unset($this->aFName);? ??????????$this->aFName=array();? ??????????for($i=0;$i<$this->nCols;$i++)? ?????????????$this->aFName[$i]=strtolower(mysql_field_name($this->nResult,$i));? ????}?
????function?SetValue($Index,$Value)?//指定数据,跟在AddNew后执行;? ????{? ?????????????if($this->NewEdit==0)? ?????????????{? ????????????????$this->nErr=1;? ????????????????$this->sErr="SetValue:请先执行AddNew()或者Edit()!";? ????????????????return;? ?????????????}? ?????????????if(is_int($Index))? ?????????????{? ?????????????????if($Index<0||$Index>$this->nCols)? ?????????????????{? ????????????????????$this->nErr=1;? ????????????????????$this->sErr="SetValue:插入不存在的列值!";? ????????????????????return;? ?????????????????}? ?????????????????$this->aNew[$Index]=$Value;? ?????????????????$tmpIn=$Index;? ?????????????}? ?????????????elseif(is_string($Index))? ?????????????{? ????????????????$Index=strtolower($Index);? ????????????????for($i=0;$i<$this->nCols;$i++)? ????????????????{? ????????????????????if($this->aFName[$i]==$Index)? ???????????????????????break;? ????????????????}? ????????????????if($i==$this->nCols)? ????????????????{? ????????????????????$this->nErr=1;? ????????????????????$this->sErr="SetValue:插入不存在的列值!";? ????????????????????return;? ?????????????????}? ?????????????????$this->aNew[$i]=$Value;? ?????????????????$tmpIn=$i;? ?????????????}? ?????????????????if(!empty($this->sName))? ????????????????????$this->sName.=",";? ?????????????????$this->sName.=$this->aFName[$tmpIn];? ?????????????????//根据当前字段的类型生成相应的新值? ?????????????????if($this->sValue!="#@!")? ????????????????????$this->sValue.=",";? ?????????????????else? ????????????????????$this->sValue="";? ?????????????????$ftype=@mysql_field_type($this->nResult,$i);? ?????????????????//echo($ftype.",".$this->aNew[$i].",".$i.":".$sValue."<br>");?
?????????????????switch($ftype)? ?????????????????{? ??????????????????case?"string":? ??????????????????case?"date":? ??????????????????case?"datetime":? ????????????????????????$this->sValue.=""".$this->aNew[$tmpIn].""";? ????????????????????????$this->sEdit=""".$this->aNew[$tmpIn].""";? ????????????????????????break;? ??????????????????case?"int":? ??????????????????case?"unknown":? ???????????????????????$this->sValue.=$this->aNew[$tmpIn];? ???????????????????????$this->sEdit=$this->aNew[$tmpIn];? ???????????????????????break;? ??????????????????default:? ???????????????????????$this->nErr=1;? ???????????????????????$this->sErr="Update:字段名为".$this->aFName[$tmpIn]."的".$ftype."类型目前版本不支持,请用别的方法添加数据!";? ???????????????????????return;? ?????????????????}?
?????????????????if($this->NewEdit==2)? ????????????????????$this->sName.="=".$this->sEdit;? ??????}?
????function?Update()????//存储新值到数据库? ????{? ??????$strSQL="";?
??????if($this->NewEdit==0)? ??????{? ????????$this->nErr=1;? ????????$this->sErr="Update:请先执行AddNew()或者Edit(),再用SetValue()添加值!";? ????????return;? ??????}?
??????if(empty($this->sValue))? ??????{? ????????$this->nErr=1;? ????????$this->sErr="Update:在数据为空的情况下,不能添加或修改数据!";? ????????return;? ??????}?
??????switch($this->NewEdit)? ??????{? ???????case?1:???????//添加? ????????????$strSQL="insert?into?";? ????????????$strSQL.=$this->sTName;? ????????????$strSQL.="?(".$this->sName.")?";? ????????????$strSQL.="values?(".$this->sValue.")";? ????????????break;? ??????case?2:??????????//修改? ????????????$strSQL="update?";? ????????????$strSQL.=$this->sTName;? ????????????$strSQL.="?set?";? ????????????$strSQL.=$this->sName;? ????????????if(!empty($this->sEditCon))? ????????????????$strSQL.="?where?".$this->sEditCon;? ????????????break;? ??????default:? ???????????$this->nErr=1;? ???????????$this->sErr="Update:Update()生成SQL语句出错,请检查!";? ???????????return;? ??????}?
??????$this->sSQL=$strSQL;? ??????if(!$this->nResult=mysql_query($strSQL))? ??????{? ????????$this->nErr=1;? ????????$this->sErr="Update:SQL语句:".$strSQL."<br><br>MySql错误:".mysql_error();? ????????return;? ??????}? ???????//echo($this->sSQL."<br>");? ??????//作清理工作? ??????$this->NewEdit=0;? ??????unset($this->aNew);? ??????mysql_query("commit");? ????}? ??}? ?> (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|