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中的Streams详细介绍
Nov 12 PHP
php中ob_get_length缓冲与获取缓冲长度实例
Nov 20 PHP
为你总结一些php系统类函数
Oct 21 PHP
PHP查看SSL证书信息的方法
Sep 22 PHP
PHP批量删除jQuery操作
Jul 23 PHP
Laravel框架定时任务2种实现方式示例
Dec 08 PHP
PHP Laravel中的Trait使用方法
Jan 20 PHP
PHP各种常见经典算法总结【排序、查找、翻转等】
Aug 05 PHP
laravel在中间件内生成参数并且传递到控制器中的2种姿势
Oct 15 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 PHP
PHP实现基本留言板功能原理与步骤详解
Mar 26 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实现邮件群发的源码
2013/06/18 PHP
php单文件版在线代码编辑器
2015/03/12 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
2016/10/19 PHP
实例讲解PHP验证邮箱是否合格
2019/01/28 PHP
javascript 模式设计之工厂模式详细说明
2010/05/10 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
javascript判断是手机还是电脑访问网页的简单实例分享
2014/06/03 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
JavaScript实现拖拽网页内元素的方法
2015/04/15 Javascript
使用AngularJS创建单页应用的编程指引
2015/06/19 Javascript
Jsonp 关键字详解及json和jsonp的区别,ajax和jsonp的区别
2015/12/30 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
2016/07/14 Javascript
js正则表达式验证表单【完整版】
2017/03/06 Javascript
js数组常用最重要的方法
2018/02/04 Javascript
layui select获取自定义属性方法
2018/08/15 Javascript
vue实现购物车结算功能
2020/06/18 Javascript
JavaScript实现无限轮播效果
2020/11/19 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
Python多进程同步简单实现代码
2016/04/27 Python
详谈套接字中SO_REUSEPORT和SO_REUSEADDR的区别
2018/04/28 Python
点球小游戏python脚本
2018/05/22 Python
Django Rest framework之认证的实现代码
2018/12/17 Python
2019 Python最新面试题及答案16道题
2019/04/11 Python
对python 中re.sub,replace(),strip()的区别详解
2019/07/22 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
在求职信中如何凸显个人优势
2013/10/30 职场文书
写给女生的道歉信
2014/01/14 职场文书
海飞丝广告词
2014/03/20 职场文书
安全口号大全
2014/06/21 职场文书
2015年安全生产管理工作总结
2015/05/25 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
Nginx如何配置多个服务域名解析共用80端口详解
2022/09/23 Servers
Redis主从复制操作和配置详情
2022/09/23 Redis