mysql仿asp的數(shù)據(jù)庫操作類
更新時(shí)間:2008年04月06日 01:20:48 投稿:mdxy-dxy
本文通過實(shí)例代碼給大家介紹了mysql仿asp的數(shù)據(jù)庫操作類,代碼簡(jiǎn)單易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
具體代碼如下所示:
<?php
class MySQLDB
{
//MYSQL數(shù)據(jù)庫操作類
//作者:熊毅
//版本:2.0(發(fā)行版)
//可以自由轉(zhuǎn)載,修改請(qǐng)通知我scxy78@yeah.net
//轉(zhuǎn)載請(qǐng)保留以上聲明
//上進(jìn)行操作,當(dāng)然也可以每次指定特殊的表進(jìn)行操作
//nErr指示是否操作出錯(cuò),sErr記錄最后一次出錯(cuò)的錯(cuò)誤代碼,記錄了明確的有哪個(gè)函數(shù)引起的錯(cuò)誤
//錯(cuò)誤之處請(qǐng)指正
//歡迎來信與我交流編程經(jīng)驗(yàn):scxy78@yeah.net
//我的CSDN:用戶號(hào):scxy;呢稱:小熊,請(qǐng)多關(guān)照
//可以自由轉(zhuǎn)載,修改請(qǐng)通知我scxy78@yeah.net
//轉(zhuǎn)載請(qǐng)保留以上聲明
var $host="localhost"; //主機(jī)名
var $user="boot"; //用戶名
var $password="oaserver"; //用戶密碼
var $linkid; //連接值
var $dbid; //數(shù)據(jù)庫選擇的結(jié)果值
var $sTName; //指定當(dāng)前操作的數(shù)據(jù)庫表
var $sErr; //錯(cuò)誤代碼
var $nErr; //指示是否有錯(cuò)誤存在,0無錯(cuò)誤,1有錯(cuò)誤
var $nResult; //查詢結(jié)果值
var $aFName; //保存FieldsName的數(shù)組
var $nRows; //查詢結(jié)果中的行數(shù)
var $nCols; //查詢結(jié)果中的列數(shù)
var $aNew; //添加在AddNew函數(shù)后的數(shù)據(jù),以數(shù)組形式保存
var $NewEdit; //判斷當(dāng)前是否在進(jìn)行添加操作,0表示沒有,1表示在進(jìn)行添加,2表示編輯
var $sEditCon; //指定編輯記錄的條件
var $nOffset; //記錄偏移量
var $EOF; //標(biāo)記是否到記錄集尾
var $sSQL; //最后一條執(zhí)行的SQL語句
//執(zhí)行Update所要用到的全局變量
var $sName; //字段名
var $sValue; //字段值A(chǔ)ddNew時(shí)用
var $sEdit; //字段值Edit時(shí)用
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") //構(gòu)造函數(shù)
{
$this->Initialize();
$this->sTName=$TableName;
$this->linkid=mysql_connect($host,$user,$password);
if(!$this->linkid)
{
$this->nErr=1;
$this->sErr="MySqlDB:數(shù)據(jù)庫連接出錯(cuò),請(qǐng)啟動(dòng)服務(wù)!";
return;
}
$this->dbid=mysql_select_db($database);
if(!$this->dbid)
{
$this->nErr=1;
$this->sErr="MySqlDB:選擇的數(shù)據(jù)庫".$database."不存在!";
return;
}
}
function IsEmpty($Value)
{
if(is_string($Value)&&empty($Value))
return true;
return false;
}
function Destroy() //數(shù)據(jù)清除處理
{
mysql_query("commit");
mysql_close();
}
function PrintErr()
{
if($this->nErr==1)
{
echo($this->sErr."<br><br>");
}
else
{
echo("沒有錯(cuò)誤<br><br>");
}
}
function Execute($SQL) //直接執(zhí)行SQL語句
{
if(empty($SQL))
{
$this->nErr=1;
$this->sErr="Execute:執(zhí)行語句不能為空!";
return false;
}
$this->sSQL=$SQL;
if(!mysql_query($SQL))
{
$this->nErr=1;
$this->sErr="Execute:SQL語句:".$SQL."<br>MySql錯(cuò)誤:".mysql_error();
return false;
}
return true;
}
function Query($TableName="",$SQL="*",$Condition="",$Order="",$Sequenc="") //在數(shù)據(jù)庫里執(zhí)行查詢
{
$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錯(cuò)誤:".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:已經(jīng)移到記錄集末尾!";
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:請(qǐng)先執(zhí)行查詢:Query";
return;
}
$this->nOffset=$Offset;
}
//得到指定行的指定列的值,返回字符串
//如果不指定Offset將取得下一行的值
//如果不指定nFields將取得該行的值,并已數(shù)組形式返回
function GetValue($nFields=-1,$Offset=-1)
{
if($this->nResult==-1)
{
$this->nErr=1;
$this->sErr="GetValue:請(qǐng)先執(zhí)行Query()函數(shù)!";
return;
}
if($Offset>-1)
{
$this->nOffset=$Offset;
if($this->nOffset>=$this->nRows)
{
$this->nErr=1;
$this->sErr="GetValue:所要求的偏移量太大,無法達(dá)到!";
return;
}
}
if(!@mysql_data_seek($this->nResult,$this->nOffset))
{
$this->nErr=1;
$this->sErr="GetValue:請(qǐng)求不存在的記錄!";
return;
}
$aResult=mysql_fetch_row($this->nResult);
if(is_int($nFields)&&$nFields>-1)
{
if($nFileds>$this->nCols)
{
$this->nErr=1;
$this->sErr="GetValue:所請(qǐng)求的列值大于實(shí)際的列值!";
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:所請(qǐng)求的列不存在,請(qǐng)仔細(xì)檢查!";
return;
}
return $aResult[$i];
}
return $aResult;
}
function AddNew($TableName="") //標(biāo)志開始添加數(shù)據(jù)
{
$this->Initialize();
if(!empty($TableName))
$this->sTName=$TableName;
if($this->NewEdit>0)
{
$this->nErr=1;
$this->sErr="AddNew:你正在對(duì)數(shù)據(jù)庫進(jìn)行添加或更新操作!";
return;
}
if(empty($this->sTName))
{
$this->nErr=1;
$this->sErr="AddNew:想要添加的數(shù)據(jù)庫表為空,可以在構(gòu)造時(shí)指定,也可在AddNew()時(shí)指定!";
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錯(cuò)誤:".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="") //對(duì)指定數(shù)據(jù)庫表進(jìn)行編輯
{
$this->Initialize();
if(!empty($TableName))
$this->sTName=$TableName;
$this->sEditCon=$Condition;
if(empty($this->sTName))
{
$this->nErr=1;
$this->sErr="Edit:在編輯前請(qǐng)先指定數(shù)據(jù)庫表!";
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錯(cuò)誤:".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) //指定數(shù)據(jù),跟在AddNew后執(zhí)行;
{
if($this->NewEdit==0)
{
$this->nErr=1;
$this->sErr="SetValue:請(qǐng)先執(zhí)行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];
//根據(jù)當(dāng)前字段的類型生成相應(yīng)的新值
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."類型目前版本不支持,請(qǐng)用別的方法添加數(shù)據(jù)!";
return;
}
if($this->NewEdit==2)
$this->sName.="=".$this->sEdit;
}
function Update() //存儲(chǔ)新值到數(shù)據(jù)庫
{
$strSQL="";
if($this->NewEdit==0)
{
$this->nErr=1;
$this->sErr="Update:請(qǐng)先執(zhí)行AddNew()或者Edit(),再用SetValue()添加值!";
return;
}
if(empty($this->sValue))
{
$this->nErr=1;
$this->sErr="Update:在數(shù)據(jù)為空的情況下,不能添加或修改數(shù)據(jù)!";
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語句出錯(cuò),請(qǐng)檢查!";
return;
}
$this->sSQL=$strSQL;
if(!$this->nResult=mysql_query($strSQL))
{
$this->nErr=1;
$this->sErr="Update:SQL語句:".$strSQL."<br><br>MySql錯(cuò)誤:".mysql_error();
return;
}
//echo($this->sSQL."<br>");
//作清理工作
$this->NewEdit=0;
unset($this->aNew);
mysql_query("commit");
}
}
?>
以上所述是小編給大家介紹的mysql仿asp的數(shù)據(jù)庫操作類,希望對(duì)大家有所幫助,如果大家有任何疑問歡迎給我留言!
相關(guān)文章
一文學(xué)會(huì)Mysql數(shù)據(jù)庫備份與恢復(fù)
數(shù)據(jù)庫備份是在數(shù)據(jù)丟失的情況下能及時(shí)恢復(fù)重要數(shù)據(jù),防止數(shù)據(jù)丟失的一種重要手段,下面這篇文章主要給大家介紹了關(guān)于Mysql數(shù)據(jù)庫備份與恢復(fù)的相關(guān)資料,需要的朋友可以參考下2022-05-05
MySQL基礎(chǔ)學(xué)習(xí)之字符集的應(yīng)用
這篇文章主要為大家詳細(xì)介紹了MySQL中字符集的相關(guān)使用,例如字符集的查詢與修改和比較規(guī)則等,文中的示例代碼講解詳細(xì),需要的可以參考一下2023-05-05
配置Mysql主從服務(wù)實(shí)現(xiàn)實(shí)例
這篇文章主要介紹了配置Mysql主從服務(wù)實(shí)現(xiàn)實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-05-05
MySQL查詢空字段或非空字段(is null和not null)
本文介紹在MySQL中,面對(duì)值為空(NULL)的字段,應(yīng)該如何查詢。怎么判斷一個(gè)字段的值為NULL或不為NULL,需要的朋友可以參考下2016-04-04
MySQL 線上數(shù)據(jù)庫清理數(shù)據(jù)的方法
這篇文章主要介紹了MySQL 線上數(shù)據(jù)庫清理數(shù)據(jù)的方法,幫助大家更好的理解和學(xué)習(xí)使用MySQL,感興趣的朋友可以了解下2021-03-03
mysql自動(dòng)定時(shí)備份數(shù)據(jù)庫的最佳方法(windows服務(wù)器)
網(wǎng)上有很多關(guān)于window下Mysql自動(dòng)備份的方法,可是真的能用的也沒有幾個(gè),有些說的還非常的復(fù)雜,難以操作,這里腳本之家小編為大家分享與整理了幾個(gè)軟件方便大家使用2016-11-11

