广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    mysql仿asp的数据库操作类

    2018-05-07 10:24:37 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布
    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");
        }
      }
    ?>

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告