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 相关文章推荐
BBS(php &amp; mysql)完整版(三)
Oct 09 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
分享一个PHP数据流应用的简单例子
Jun 01 PHP
php处理文件的小例子(解压缩,删除目录)
Feb 03 PHP
thinkphp中连接oracle时封装方法无法用的解决办法
Jun 17 PHP
PHP中使用sleep函数实现定时任务实例分享
Aug 21 PHP
经典PHP加密解密函数Authcode()修复版代码
Apr 05 PHP
PHP各种异常和错误的拦截方法及发生致命错误时进行报警
Jan 19 PHP
PHP共享内存使用与信号控制实例分析
May 09 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
PHP代码覆盖率统计详解
Jul 22 PHP
laravel数据库查询结果自动转数组修改实例
Feb 27 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实现框架(一)
2006/10/09 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
PHP使用pear实现mail发送功能 windows环境下配置pear
2016/04/15 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
javascript入门·对象属性方法大总结
2007/10/01 Javascript
jquery获取选中的文本和值的方法
2014/07/08 Javascript
原生javascript实现隔行换色
2015/01/04 Javascript
js+html5实现canvas绘制镂空字体文本的方法
2015/06/05 Javascript
js css实现垂直方向自适应的三角提示菜单
2016/06/26 Javascript
JS实现字符串转驼峰格式的方法
2016/12/16 Javascript
JS实现页面中所有img对象添加onclick事件及新窗口查看图片的方法
2016/12/27 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
实现一个完整的Node.js RESTful API的示例
2017/09/29 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
详解vue中移动端自适应方案
2019/05/05 Javascript
微信小程序录音实现功能并上传(使用node解析接收)
2020/02/26 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
使用Python编写一个在Linux下实现截图分享的脚本的教程
2015/04/24 Python
Python从MP3文件获取id3的方法
2015/06/15 Python
浅谈Python爬取网页的编码处理
2016/11/04 Python
python 开发的三种运行模式详细介绍
2017/01/18 Python
Python创建对称矩阵的方法示例【基于numpy模块】
2017/10/12 Python
Python实现求解括号匹配问题的方法
2018/04/17 Python
python接口自动化测试之接口数据依赖的实现方法
2019/04/26 Python
安装docker-compose的两种最简方法
2019/07/30 Python
tensorflow2.0保存和恢复模型3种方法
2020/02/03 Python
Python如何实现大型数组运算(使用NumPy)
2020/07/24 Python
PyTorch预训练Bert模型的示例
2020/11/17 Python
python eventlet绿化和patch原理
2020/11/21 Python
新西兰珠宝品牌:Michael Hill
2017/09/16 全球购物
民族团结演讲稿范文
2014/08/27 职场文书
2014年大学班长工作总结
2014/11/14 职场文书
预备党员的思想汇报,你真的会写吗?
2019/06/28 职场文书