MySQL仿ASP的数据库操作类实例

2018-11-20 03:19:35来源:爱站网 阅读 ()

新老客户大回馈,云服务器低至5折

本文讲述的是MySQL仿ASP的数据库操作类实例,代码简单易懂,小编觉得挺OK的,而且具有一定的参考借鉴价值,需要的朋友可以参考下其中的内容详情吧。

CODE:[复制到剪切板] 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."

");
??????}
??????else
??????{
????????echo("没有错误

");
??????}
????}

????????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."
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."
MySql错误:".mysql_error()."
";
????????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;$inCols;$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;$inCols;$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."

MySql错误:".mysql_error();
????????return;
??????}
??????$this->nCols=mysql_num_fields($this->nResult);
??????unset($this->aFName);
??????$this->aFName=array();
??????for($i=0;$inCols;$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."

MySql错误:".mysql_error();
?????????????return;
??????????}
??????????$this->nCols=mysql_num_fields($this->nResult);
??????????unset($this->aFName);
??????????$this->aFName=array();
??????????for($i=0;$inCols;$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$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;$inCols;$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."
");

?????????????????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."

MySql错误:".mysql_error();
????????return;
??????}
???????//echo($this->sSQL."
");
??????//作清理工作
??????$this->NewEdit=0;
??????unset($this->aNew);
??????mysql_query("commit");
????}
??}
?>

以上就是MySQL仿ASP的数据库操作类实例介绍,如果大家想了解更多相关内容,请持续关注本站,本站小编将在第一时间为大家带来更好的经典内容。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:MYSQL允许远程访问三种设置方法

下一篇:MySQL子查询操作实例