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 修改zen-cart下单和付款流程以防止漏单
Mar 08 PHP
用PHP读取超大文件的实例代码
Apr 01 PHP
php教程 插件机制在PHP中实现方案
Nov 02 PHP
phpmyadmin出现Cannot start session without errors问题解决方法
Aug 14 PHP
php中用memcached实现页面防刷新功能
Aug 19 PHP
php实现事件监听与触发的方法
Nov 21 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php 二维数组时间排序实现代码
Nov 19 PHP
PHP实现链式操作的三种方法详解
Nov 16 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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新手用的Insert和Update语句构造类
2012/03/31 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
PHP使用逆波兰式计算工资的方法
2015/07/29 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
2019/11/25 PHP
找到一点可怜的关于dojo资料,谢谢作者!
2006/12/06 Javascript
javascript判断单选框或复选框是否选中方法集锦
2007/04/04 Javascript
JS的数组的扩展实例代码
2008/07/09 Javascript
javascript 精粹笔记
2010/05/09 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
jQuery中toggleClass()方法用法实例
2015/01/05 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
JS实用技巧小结(屏蔽错误、div滚动条设置、背景图片位置等)
2016/06/16 Javascript
微信小程序 页面跳转传参详解
2016/10/28 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
基于layui框架响应式布局的一些使用详解
2019/09/16 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
Vue 电商后台管理项目阶段性总结(推荐)
2020/08/22 Javascript
Vant+postcss-pxtorem 实现浏览器适配功能
2021/02/05 Javascript
[41:52]DOTA2-DPC中国联赛 正赛 CDEC vs Dynasty BO3 第二场 2月22日
2021/03/11 DOTA
Python读取txt文件数据的方法(用于接口自动化参数化数据)
2018/06/27 Python
python获取中文字符串长度的方法
2018/11/14 Python
Python爬虫 bilibili视频弹幕提取过程详解
2019/07/31 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
pytorch 使用加载训练好的模型做inference
2020/02/20 Python
接口自动化多层嵌套json数据处理代码实例
2020/11/20 Python
python实现杨辉三角的几种方法代码实例
2021/03/02 Python
Intersport西班牙:在线体育商店
2019/11/06 全球购物
应用化学专业本科生求职信
2013/09/29 职场文书
求职者应聘的自我评价
2013/10/16 职场文书
国际政治学专业推荐信
2014/09/26 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
今日说法观后感
2015/06/08 职场文书