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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
php xml留言板 xml存储数据的简单例子
Aug 24 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
让Nginx支持ThinkPHP的URL重写和PATHINFO的方法分享
Aug 08 PHP
深入apache配置文件httpd.conf的部分参数说明
Jun 28 PHP
ThinkPHP3.1新特性之对分组支持的改进与完善概述
Jun 19 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
Jun 30 PHP
php抽象类使用要点与注意事项分析
Feb 09 PHP
Zend Framework使用Zend_Loader组件动态加载文件和类用法详解
Dec 09 PHP
thinkphp 验证码 的使用小结
May 07 PHP
Laravel 5.4.36中session没有保存成功问题的解决
Feb 19 PHP
PHP 7.4 新语法之箭头函数实例详解
May 09 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
实现树状结构的两种方法
2006/10/09 PHP
深入了解php4(1)--回到未来
2006/10/09 PHP
PHP三层结构(上) 简单三层结构
2010/07/04 PHP
linux下使用ThinkPHP需要注意大小写导致的问题
2011/08/02 PHP
解析PHP中intval()等int转换时的意外异常情况
2013/06/21 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
JQUERY 浏览器判断实现函数
2009/08/20 Javascript
jquery 弹出层实现代码
2009/10/30 Javascript
JavaScript Event学习第六章 事件的访问
2010/02/07 Javascript
Extjs gridpanel 出现横向滚动条问题的解决方法
2011/07/04 Javascript
Javascript中判断变量是数组还是对象(array还是object)
2013/08/14 Javascript
使用正则表达式的格式化与高亮显示json字符串
2014/12/03 Javascript
js实现文字滚动效果
2016/03/03 Javascript
AngularJS基础 ng-srcset 指令简单示例
2016/08/03 Javascript
浅谈JavaScript的计时器对象
2016/12/26 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
react开发教程之React 组件之间的通信方式
2017/08/12 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
vue router自动判断左右翻页转场动画效果
2017/10/10 Javascript
jQuery实现鼠标响应式淘宝动画效果示例
2018/02/13 jQuery
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
Vue2 轮播图slide组件实例代码
2018/05/31 Javascript
Ajax请求时无法重定向的问题解决代码详解
2019/06/21 Javascript
Paypal支付不完全指北
2020/06/04 Javascript
python3使用smtplib实现发送邮件功能
2018/05/22 Python
Python绘制并保存指定大小图像的方法
2019/01/10 Python
python 实现一次性在文件中写入多行的方法
2019/01/28 Python
Python3.7 新特性之dataclass装饰器
2019/05/27 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Python如何实现小程序 无限求和平均
2020/02/18 Python
优秀民警事迹材料
2014/01/29 职场文书
股权转让协议书
2014/12/07 职场文书
小学五年级语文上册教学计划
2015/01/22 职场文书
展览会邀请函
2015/02/02 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
高中家长意见怎么写
2015/06/03 职场文书