php的mssql数据库连接类实例


Posted in PHP onNovember 28, 2014

本文实例讲述了php的mssql数据库连接类实例代码,分享给大家供大家参考。

具体实现代码如下:

class DB_Sql { 

  var $Host     = ""; 

  var $Database = ""; 

  var $User     = ""; 

  var $Password = ""; 

  var $Link_ID  = 0; 

  var $Query_ID = 0; 

  var $Record   = array(); 

  var $Row      = 0; 

   

  var $Errno    = 0; 

  var $Error    = ""; 

  var $Auto_Free = 0;     ## set this to 1 to automatically free results 

   

  function DB_Sql($query = "") { 

      $this->query($query); 

  } 

  function connect() { 

    if ( 0 == $this->Link_ID ) { 

      $this->Link_ID=mssql_connect($this->Host, $this->User, $this->Password); 

      if (!$this->Link_ID) 

        $this->halt("Link-ID == false, mssql_pconnect failed"); 

      else 

          @mssql_select_db($this->Database, $this->Link_ID); 

    } 

  } 

  function free_result(){ 

      mssql_free_result($this->Query_ID); 

      $this->Query_ID = 0; 

  } 

   

  function query($Query_String)  

  { 

     

    /* No empty queries, please, since PHP4 chokes on them. */ 

    if ($Query_String == "") 

      /* The empty query string is passed on from the constructor, 

       * when calling the class without a query, e.g. in situations 

       * like these: '$db = new DB_Sql_Subclass;' 

       */ 

      return 0; 

      if (!$this->Link_ID) 

        $this->connect(); 

     

#   printf("<br>Debug: query = %s<br> ", $Query_String); 

 

 $this->Query_ID = mssql_query($Query_String, $this->Link_ID); 

    $this->Row = 0; 

    if (!$this->Query_ID) { 

      $this->Errno = 1; 

      $this->Error = "General Error (The MSSQL interface cannot return detailed error messages)."; 

      $this->halt("Invalid SQL: ".$Query_String); 

    } 

    return $this->Query_ID; 

  } 

   

  function next_record() { 

       

    if ($this->Record = mssql_fetch_row($this->Query_ID)) { 

      // add to Record[<key>] 

      $count = mssql_num_fields($this->Query_ID); 

      for ($i=0; $i<$count; $i++){ 

          $fieldinfo = mssql_fetch_field($this->Query_ID,$i); 

        $this->Record[strtolower($fieldinfo->name)] = $this->Record[$i]; 

      } 

      $this->Row += 1; 

      $stat = 1; 

    } else { 

      if ($this->Auto_Free) { 

            $this->free_result(); 

          } 

      $stat = 0; 

    } 

    return $stat; 

  } 

   

  function seek($pos) { 

        mssql_data_seek($this->Query_ID,$pos); 

      $this->Row = $pos; 

  } 

  function metadata($table) { 

    $count = 0; 

    $id    = 0; 

    $res   = array(); 

    $this->connect(); 

    $id = mssql_query("select * from $table", $this->Link_ID); 

    if (!$id) { 

      $this->Errno = 1; 

      $this->Error = "General Error (The MSSQL interface cannot return detailed error messages)."; 

      $this->halt("Metadata query failed."); 

    } 

    $count = mssql_num_fields($id); 

     

    for ($i=0; $i<$count; $i++) { 

        $info = mssql_fetch_field($id, $i); 

      $res[$i]["table"] = $table; 

      $res[$i]["name"]  = $info["name"]; 

      $res[$i]["len"]   = $info["max_length"]; 

      $res[$i]["flags"] = $info["numeric"]; 

    } 

    $this->free_result(); 

    return $res; 

  } 

   

  function affected_rows() { 

// Not a supported function in PHP3/4.  Chris Johnson, 16May2001. 

//    return mssql_affected_rows($this->Query_ID); 

    $rsRows = mssql_query("Select @@rowcount as rows", $this->Link_ID); 

    if ($rsRows) {        

       return mssql_result($rsRows, 0, "rows"); 

    } 

  } 

   

  function num_rows() { 

    return mssql_num_rows($this->Query_ID); 

  } 

   

  function num_fields() { 

    return mssql_num_fields($this->Query_ID); 

  } 

  function nf() { 

    return $this->num_rows(); 

  } 

   

  function np() { 

    print $this->num_rows(); 

  } 

   

  function f($Field_Name) { 

    return $this->Record[strtolower($Field_Name)]; 

  }

   

  function p($Field_Name) { 

    print $this->f($Field_Name); 

  } 

   

  function halt($msg) { 

    printf("</td></tr></table><b>Database error:</b> %s<br> ", $msg); 

    printf("<b>MSSQL Error</b>: %s (%s)<br> ", 

      $this->Errno, 

      $this->Error); 

    die("Session halted."); 

  } 

}

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

PHP 相关文章推荐
使用PHP socke 向指定页面提交数据
Jul 23 PHP
php Xdebug 调试扩展的安装与使用.
Mar 13 PHP
php学习之运算符相关概念
Jun 09 PHP
php 解决旧系统 查出所有数据分页的类
Aug 27 PHP
php获取域名的google收录示例
Mar 24 PHP
PHP 的比较运算与逻辑运算详解
May 12 PHP
图文详解PHP环境搭建教程
Jul 16 PHP
PHP接收App端发送文件流的方法
Sep 23 PHP
PHP 常用时间函数资料整理
Oct 22 PHP
php导出csv文件,可导出前导0实例代码
Nov 16 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
PHP大文件切割上传功能实例分析
Jul 01 PHP
smarty中post用法实例
Nov 28 #PHP
smarty简单入门实例
Nov 28 #PHP
php最简单的删除目录与文件实现方法
Nov 28 #PHP
php查找指定目录下指定大小文件的方法
Nov 28 #PHP
thinkphp四种url访问方式详解
Nov 28 #PHP
thinkphp数据查询和遍历数组实例
Nov 28 #PHP
php中fgetcsv()函数用法实例
Nov 28 #PHP
You might like
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
为查询结果建立向后/向前按钮
2006/10/09 PHP
php生成百度sitemap站点地图类函数实例
2014/10/17 PHP
PHP中让json_encode不自动转义斜杠“/”的方法
2017/02/28 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
2009/06/02 Javascript
jQuery Jcrop插件实现图片选取功能
2011/11/23 Javascript
使用jquery实现图文切换效果另加特效
2013/01/20 Javascript
jQuery中extend函数详解
2015/07/13 Javascript
详解Javascript模板引擎mustache.js
2016/01/20 Javascript
Javascript中的Prototype到底是什么
2016/02/16 Javascript
基于jquery实现二级联动效果
2017/03/30 jQuery
彻底解决 webpack 打包文件体积过大问题
2017/07/07 Javascript
Vue.js中extend选项和delimiters选项的比较
2017/07/17 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
2018/08/30 Javascript
Electron 如何调用本地模块的方法
2019/02/01 Javascript
angular2 NgModel模块的具体使用方法
2019/04/10 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
[49:21]2018DOTA2亚洲邀请赛3月30日 小组赛B组 Effect VS iG
2018/03/31 DOTA
Python中Threading用法详解
2017/12/27 Python
Python中判断输入是否为数字的实现代码
2018/05/26 Python
Python3 sys.argv[ ]用法详解
2019/10/24 Python
Python实现井字棋小游戏
2020/03/09 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
Django日志及中间件模块应用案例
2020/09/10 Python
《巨人的花园》教学反思
2014/02/12 职场文书
职业规划实施方案
2014/06/10 职场文书
建筑学专业自荐书
2014/07/09 职场文书
个人合伙协议书范本
2014/10/14 职场文书
新闻简讯格式及范文
2015/07/22 职场文书
如何把新闻人物写得立体、鲜活?
2019/08/14 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技
keepalived + nginx 实现高可用方案
2022/12/24 Servers