>백엔드 개발 >PHP 튜토리얼 >PHP로 캡슐화된 MSSql 작업 클래스 및 완전한 예제 분석

PHP로 캡슐화된 MSSql 작업 클래스 및 완전한 예제 분석

墨辰丷
墨辰丷원래의
2018-06-02 10:07:432132검색

이 글에서는 주로 PHP로 캡슐화한 MSSql 연산 클래스를 소개하고, PHP로 캡슐화한 일반적으로 사용되는 다양한 mssql 데이터베이스 연산을 mssql 데이터베이스에 대한 연결, 추가, 삭제, 수정 등을 포함한 완전한 예제 형식으로 분석합니다. 다음을 참고하세요

자세한 내용은 다음과 같습니다.

<?php
/*MSSql的操作类*/
class MSSql {
  var $link;
  var $querynum = 0;
  /*连接MSSql数据库,参数:dbsn->数据库服务器地址,dbun->登陆用户名,dbpw->登陆密码,dbname->数据库名字*/
  function Connect($dbsn, $dbun, $dbpw, $dbname) {
    if($this->link = @mssql_connect($dbsn, $dbun, $dbpw, true)) {
      $query = $this->Query(&#39;SET TEXTSIZE 2147483647&#39;);
      if (@mssql_select_db($dbname, $this->link)) {
      } else {
        $this->halt(&#39;Can not Select DataBase&#39;);
      }
    } else {
      $this->halt(&#39;Can not connect to MSSQL server&#39;);
    }
  }
  /*执行sql语句,返回对应的结果标识*/
  function Query($sql) {
    if($query = @mssql_query($sql, $this->link)) {
      $this->querynum++;
      return $query;
    } else {
      $this->querynum++;
      $this->halt(&#39;MSSQL Query Error&#39;, $sql);
    }
  }
  /*执行Insert Into语句,并返回最后的insert操作所产生的自动增长的id*/
  function Insert($table, $iarr) {
    $value = $this->InsertSql($iarr);
    $query = $this->Query(&#39;INSERT INTO &#39; . $table . &#39; &#39; . $value . &#39;; SELECT SCOPE_IDENTITY() AS [insertid];&#39;);
    $record = $this->GetRow($query);
    $this->Clear($query);
    return $record[&#39;insertid&#39;];
  }
  /*执行Update语句,并返回最后的update操作所影响的行数*/
  function Update($table, $uarr, $condition = &#39;&#39;) {
    $value = $this->UpdateSql($uarr);
    if ($condition) {
      $condition = &#39; WHERE &#39; . $condition;
    }
    $query = $this->Query(&#39;UPDATE &#39; . $table . &#39; SET &#39; . $value . $condition . &#39;; SELECT @@ROWCOUNT AS [rowcount];&#39;);
    $record = $this->GetRow($query);
    $this->Clear($query);
    return $record[&#39;rowcount&#39;];
  }
  /*执行Delete语句,并返回最后的Delete操作所影响的行数*/
  function Delete($table, $condition = &#39;&#39;) {
    if ($condition) {
      $condition = &#39; WHERE &#39; . $condition;
    }
    $query = $this->Query(&#39;DELETE &#39; . $table . $condition . &#39;; SELECT @@ROWCOUNT AS [rowcount];&#39;);
    $record = $this->GetRow($query);
    $this->Clear($query);
    return $record[&#39;rowcount&#39;];
  }
  /*将字符转为可以安全保存的mssql值,比如a&#39;a转为a&#39;&#39;a*/
  function EnCode($str) {
    return str_replace(&#39;&#39;&#39;, &#39;&#39;&#39;&#39;, str_replace(&#39;&#39;, &#39;&#39;, $str));
  }
  /*将可以安全保存的mssql值转为正常的值,比如a&#39;&#39;a转为a&#39;a*/
  function DeCode($str) {
    return str_replace(&#39;&#39;&#39;&#39;, &#39;&#39;&#39;, $str);
  }
  /*将对应的列和值生成对应的insert语句,如:array(&#39;id&#39; => 1, &#39;name&#39; => &#39;name&#39;)返回([id], [name]) VALUES (1, &#39;name&#39;)*/
  function InsertSql($iarr) {
    if (is_array($iarr)) {
      $fstr = &#39;&#39;;
      $vstr = &#39;&#39;;
      foreach ($iarr as $key => $val) {
        $fstr .= &#39;[&#39; . $key . &#39;], &#39;;
        $vstr .= &#39;&#39;&#39; . $val . &#39;&#39;, &#39;;
      }
      if ($fstr) {
        $fstr = &#39;(&#39; . substr($fstr, 0, -2) . &#39;)&#39;;
        $vstr = &#39;(&#39; . substr($vstr, 0, -2) . &#39;)&#39;;
        return $fstr . &#39; VALUES &#39; . $vstr;
      } else {
        return &#39;&#39;;
      }
    } else {
      return &#39;&#39;;
    }
  }
  /*将对应的列和值生成对应的insert语句,如:array(&#39;id&#39; => 1, &#39;name&#39; => &#39;name&#39;)返回[id] = 1, [name] = &#39;name&#39;*/
  function UpdateSql($uarr) {
    if (is_array($uarr)) {
      $ustr = &#39;&#39;;
      foreach ($uarr as $key => $val) {
        $ustr .= &#39;[&#39; . $key . &#39;] = &#39;&#39; . $val . &#39;&#39;, &#39;;
      }
      if ($ustr) {
        return substr($ustr, 0, -2);
      } else {
        return &#39;&#39;;
      }
    } else {
      return &#39;&#39;;
    }
  }
  /*返回对应的查询标识的结果的一行*/
  function GetRow($query, $result_type = MSSQL_ASSOC) {
    return mssql_fetch_array($query, $result_type);
  }
  /*清空查询结果所占用的内存资源*/
  function Clear($query) {
    return mssql_free_result($query);
  }
  /*关闭数据库*/
  function Close() {
    return mssql_close($this->link);
  }
  function halt($message = &#39;&#39;, $sql = &#39;&#39;) {
    $message .= &#39;<br />MSSql Error:&#39; . mssql_get_last_message();
    if ($sql) {
      $sql = &#39;<br />sql:&#39; . $sql;
    }
    exit("DataBase Error.<br />Message $message $sql");
  }
}
?>

요약: 위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:

PHP에서 일반적으로 사용되는 세 가지 디자인 패턴 요약

페이지 번호를 입력하여 지정된 페이지로 이동하는 PHP+MySQL 구현 예

PHP 인쇄 출력 기능 공유 요약

위 내용은 PHP로 캡슐화된 MSSql 작업 클래스 및 완전한 예제 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.