《MYSQL數據庫mysql仿asp的數據庫操作類》要點:
本文介紹了MYSQL數據庫mysql仿asp的數據庫操作類,希望對您有用。如果有疑問,可以聯系我們。
CODE:[復制到剪切板]<?php
class?MySQLDB
??{
????//MYSQL數據庫操作類
????//作者:熊毅
????//版本:2.0(發行版)
????//可以自由轉載,修改請通知我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/5273.html