PHP封装的MSSql操作类完整实例


Posted in PHP onMay 26, 2016

本文实例讲述了PHP封装的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('SET TEXTSIZE 2147483647');
      if (@mssql_select_db($dbname, $this->link)) {
      } else {
        $this->halt('Can not Select DataBase');
      }
    } else {
      $this->halt('Can not connect to MSSQL server');
    }
  }
  /*执行sql语句,返回对应的结果标识*/
  function Query($sql) {
    if($query = @mssql_query($sql, $this->link)) {
      $this->querynum++;
      return $query;
    } else {
      $this->querynum++;
      $this->halt('MSSQL Query Error', $sql);
    }
  }
  /*执行Insert Into语句,并返回最后的insert操作所产生的自动增长的id*/
  function Insert($table, $iarr) {
    $value = $this->InsertSql($iarr);
    $query = $this->Query('INSERT INTO ' . $table . ' ' . $value . '; SELECT SCOPE_IDENTITY() AS [insertid];');
    $record = $this->GetRow($query);
    $this->Clear($query);
    return $record['insertid'];
  }
  /*执行Update语句,并返回最后的update操作所影响的行数*/
  function Update($table, $uarr, $condition = '') {
    $value = $this->UpdateSql($uarr);
    if ($condition) {
      $condition = ' WHERE ' . $condition;
    }
    $query = $this->Query('UPDATE ' . $table . ' SET ' . $value . $condition . '; SELECT @@ROWCOUNT AS [rowcount];');
    $record = $this->GetRow($query);
    $this->Clear($query);
    return $record['rowcount'];
  }
  /*执行Delete语句,并返回最后的Delete操作所影响的行数*/
  function Delete($table, $condition = '') {
    if ($condition) {
      $condition = ' WHERE ' . $condition;
    }
    $query = $this->Query('DELETE ' . $table . $condition . '; SELECT @@ROWCOUNT AS [rowcount];');
    $record = $this->GetRow($query);
    $this->Clear($query);
    return $record['rowcount'];
  }
  /*将字符转为可以安全保存的mssql值,比如a'a转为a''a*/
  function EnCode($str) {
    return str_replace(''', '''', str_replace('', '', $str));
  }
  /*将可以安全保存的mssql值转为正常的值,比如a''a转为a'a*/
  function DeCode($str) {
    return str_replace('''', ''', $str);
  }
  /*将对应的列和值生成对应的insert语句,如:array('id' => 1, 'name' => 'name')返回([id], [name]) VALUES (1, 'name')*/
  function InsertSql($iarr) {
    if (is_array($iarr)) {
      $fstr = '';
      $vstr = '';
      foreach ($iarr as $key => $val) {
        $fstr .= '[' . $key . '], ';
        $vstr .= ''' . $val . '', ';
      }
      if ($fstr) {
        $fstr = '(' . substr($fstr, 0, -2) . ')';
        $vstr = '(' . substr($vstr, 0, -2) . ')';
        return $fstr . ' VALUES ' . $vstr;
      } else {
        return '';
      }
    } else {
      return '';
    }
  }
  /*将对应的列和值生成对应的insert语句,如:array('id' => 1, 'name' => 'name')返回[id] = 1, [name] = 'name'*/
  function UpdateSql($uarr) {
    if (is_array($uarr)) {
      $ustr = '';
      foreach ($uarr as $key => $val) {
        $ustr .= '[' . $key . '] = '' . $val . '', ';
      }
      if ($ustr) {
        return substr($ustr, 0, -2);
      } else {
        return '';
      }
    } else {
      return '';
    }
  }
  /*返回对应的查询标识的结果的一行*/
  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 = '', $sql = '') {
    $message .= '<br />MSSql Error:' . mssql_get_last_message();
    if ($sql) {
      $sql = '<br />sql:' . $sql;
    }
    exit("DataBase Error.<br />Message $message $sql");
  }
}
?>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php对大文件进行读取操作的实现代码
Jan 23 PHP
php读取文件内容的几种方法详解
Jun 26 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
ThinkPHP3.1查询语言详解
Jun 19 PHP
laravel安装和配置教程
Oct 29 PHP
9个经典的PHP代码片段分享
Dec 18 PHP
PHP之图片上传类实例代码(加了缩略图)
Jun 30 PHP
Yii配置与使用memcached缓存的方法
Jul 13 PHP
PHP加密解密类实例代码
Jul 20 PHP
支付宝支付开发――当面付条码支付和扫码支付实例
Nov 04 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
PHP FileSystem 文件系统常用api整理总结
Jul 12 PHP
PHP简单操作MongoDB的方法(安装及增删改查)
May 26 #PHP
基于PHP实现数据分页显示功能
May 26 #PHP
yii2实现根据时间搜索的方法
May 25 #PHP
Yii2框架使用计划任务的方法
May 25 #PHP
提交表单后 PHP获取提交内容的实现方法
May 25 #PHP
PHP中类的继承和用法实例分析
May 24 #PHP
PHP中抽象类和抽象方法概念与用法分析
May 24 #PHP
You might like
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
PHP引用返回用法示例
2016/05/28 PHP
PHP面向对象之领域模型+数据映射器实例(分析)
2017/06/21 PHP
PHP面向对象五大原则之单一职责原则(SRP)详解
2018/04/04 PHP
php接口实现拖拽排序功能
2018/04/23 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
使用window.prompt()实现弹出用户输入的对话框
2015/04/13 Javascript
Bootstrap实现默认导航栏效果
2020/09/21 Javascript
基于Bootstrap实现图片轮播效果
2016/05/22 Javascript
深入理解JavaScript 函数
2016/06/06 Javascript
js HTML5上传示例代码完整版
2016/10/10 Javascript
JS实现探测网站链接的方法【测试可用】
2016/11/08 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
2016/12/22 Javascript
Vue自定义指令拖拽功能示例
2017/02/17 Javascript
Vue 2.0入门基础知识之内部指令详解
2017/10/15 Javascript
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
浅析JS中回调函数及用法
2018/07/25 Javascript
vue项目打包之后背景样式丢失的解决方案
2019/01/17 Javascript
[01:33]DOTA2上海特级锦标赛 LIQUID战队完整宣传片
2016/03/16 DOTA
python检查指定文件是否存在的方法
2015/07/06 Python
Python探索之实现一个简单的HTTP服务器
2017/10/28 Python
python图像常规操作
2017/11/11 Python
代码分析Python地图坐标转换
2018/02/08 Python
pandas DataFrame行或列的删除方法的实现示例
2019/08/02 Python
django基础学习之send_mail功能
2019/08/07 Python
Python 进程操作之进程间通过队列共享数据,队列Queue简单示例
2019/10/11 Python
python实现加密的方式总结
2020/01/19 Python
Python偏函数Partial function使用方法实例详解
2020/06/17 Python
python读取xml文件方法解析
2020/08/04 Python
Python读取xlsx数据生成图标代码实例
2020/08/12 Python
html5各种页面切换效果和模态对话框用法总结
2014/12/15 HTML / CSS
单位工作证明范文
2014/09/14 职场文书
民主评议党员总结
2014/10/20 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
社交电商模式的兴起:这些新的商机千万别错过
2019/07/26 职场文书