《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");?
????}?
??}?
?>
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/2690.html