Php Mssql操作简单封装支持存储过程


Posted in PHP onDecember 11, 2009

核心代码:

<?php
/*
 * class :Mssql
 * time :2009-12-10
 * author :Libaochang
 * version :1.0b
 * description :mssql database access class,it can execute the procedur or sql
*/
class MssqlUtil {
  var $user = null; //database user name
  var $keys = null; //database user password
  var $host = 'localhost'; //database host name/ip and port
  var $base = null; //database name
  var $link = null; //create link
  
  /** 
   * construct function init all parmeters
   * @param <type> $host database host name/ip and port
   * @param <type> $user database user name
   * @param <type> $keys database user password
   * @param <type> $base database name
   */
  function __construct($host, $user, $keys, $base) {
    $this->host = $host;
    $this->user = $user;
    $this->keys = $keys;
    $this->base = $base;
  }
  /** 
   * create the connection
   */
  function connect() {
    $this->link = mssql_connect($this->host, $this->user, $this->keys);
    if (!$this->link) {
      die('connecting failed...check the module and setting...');
    }
    $select = mssql_select_db($this->base, $this->link);
    if (!$select) {
      die('data base is not exist...,please checke it ...');
    }
  }
  /** 
   * execute the procedur width the parameter
   * @param <type> $pName procedur name
   * @param <type> $parName parameters it's like this $par=array('@a'=>'a')
   * @param <type> $sqlTyle the procedur's parameter type, it's llike this $sqlType=array(SQLVARCHAR,SQLVARCHAR); and there is not the char single quote mark(').
   * @return <type> object array
   */
  function executeProcedur($pName, $parName, $sqlTyle) {
    $this->connect();
    $stmt = mssql_init($pName, $this->link);
    if (isset($parName)) {
      $i = 0;
      foreach ($parName as $par => $value) {
        mssql_bind($stmt, $par, $value, $sqlTyle[$i]);
        ++$i;
      }
      $res = mssql_execute($stmt);
      $this->close();
      while ($row = mssql_fetch_assoc($res)) {
        $r[] = $row;
      }
      unset($i);
      mssql_free_result($res);
      mssql_free_statement($stmt);
      return $r;
    }
  }
  /** 
   * execute procedur without the parameter
   * @param <type> $pName Procedur Name
   * @return <type> object array
   */
  function executeProcedurNoPar($pName) {
    $this->connect();
    $stmt = mssql_init($pName, $this->link);
    $res = mssql_execute($stmt);
    $this->close();
    while ($row = mssql_fetch_assoc($res)) {
      $r[] = $row;
    }
    mssql_free_result($res);
    mssql_free_statement($stmt);
    return $r;
  }
  /** 
   * Get one row return Array
   * @param <type> $sql
   * @return <type> Array
   */
  function getRowArray($sql) {
    $res = $this->query($sql);
    $r = mssql_fetch_row($res);
    mssql_free_result($res);
    return $r;
  }
  /** 
   * Get one row return object
   * @param <type> $sql Sql
   * @return <type> Object
   */
  function getRowObject($sql) {
    $res = $this->query($sql);
    $r = mssql_fetch_assoc($res);
    return $r;
  }
  /** 
   * Execute one sql
   * @param <type> $sql Sql
   * @return <type> result
   */
  function query($sql) {
    $this->connect();
    $res = mssql_query($sql, $this->link);
    $this->close();
    return $res;
  }
  /** 
   * Get every row from result by Object, Return a Array with every element is Object
   * @param <type> $sql
   * @return <type> Object Array result
   */
  function getResult($sql) {
    $res = $this->query($sql);
    while ($row = mssql_fetch_assoc($res)) {
      $r[] = $row;
    }
    unset($row);
    mssql_free_result($res);
    return $r;
  }
  /** 
   * execute a sql
   * @param <type> $sql Sql
   */
  function executeSql($sql) {
    return $this->query($sql);
  }
  /** 
   * execute a sql statement
   * @param <type> $sql
   * @return <type> int $affected rows
   */
  function querySql($sql) {
    $this->connect();
    mssql_query($sql, $this->link);
    $affected = mssql_rows_affected($this->link);
    $this->close();
    return $affected;
  }
  /** 
   * close connection
   */
  function close() {
    mssql_close();
  }
}
?>

下面说下调用

function __autoload($MssqlUtil) { 
require $MssqlUtil.'.php'; 
} 
$db = new MssqlUtil($config['host'],$config['user'],$config['keys'],$config['base']);

主要说下带参数的存储过程调用

$pName 存储过程名字 
$parName 参数,参数形式很重要,是数组类型,对应关系为 
array('@a'=>'a') @a 为存储过程里面的参数,a为要传递的值 
$sqlTyle 是存储过程参数的数据类型,是数组形式,也很重要 
array(SQLCHAR,SQLVARCHAR),注意不要加单引号等,因为SQLVARCHAR是SQL的一些常量 

带参数存储过程 
$db->executeProcedur($pName,$parName,$sqlTyle); 
无参数存储过程 
$db->executeProcedurNoPar($pName);

select * from t2 where t2.id in(select max(t2.id) from t1 join t2 on t1.id = t2.pid group by t1.id);
取每个分类的最新一条数据。此处做个记录。
t1为类别表,t2为主表

PHP 相关文章推荐
php 获取当前访问的url文件名的方法小结
Feb 08 PHP
采用header定义为文件然后readfile下载(隐藏下载地址)
Jan 31 PHP
ThinkPHP之foreach标签使用概述
Jun 30 PHP
destoon实现调用热门关键字的方法
Jul 15 PHP
mysql_connect localhost和127.0.0.1的区别(网络层阐述)
Mar 26 PHP
PHP实现事件机制实例分析
Jun 26 PHP
Laravel SQL语句记录方式(推荐)
May 26 PHP
PHP封装的数据库保存session功能类
Jul 11 PHP
通过chrome浏览器控制台(Console)进行PHP Debug的方法
Oct 19 PHP
Nginx下ThinkPHP5的配置方法详解
Aug 01 PHP
PHP获取链表中倒数第K个节点的方法
Jan 18 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 PHP
php smarty模版引擎中变量操作符及使用方法
Dec 11 #PHP
phpmyadmin导入(import)文件限制的解决办法
Dec 11 #PHP
php smarty模版引擎中的缓存应用
Dec 11 #PHP
php5 图片验证码实现代码
Dec 11 #PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 #PHP
一个比较简单的PHP 分页分组类
Dec 10 #PHP
PHP 采集程序中常用的函数
Dec 09 #PHP
You might like
使用HMAC-SHA1签名方法详解
2013/06/26 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
jQuery 处理表单元素的代码
2010/02/15 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
js实现简单的星级选择器提交效果适用于评论等
2013/10/18 Javascript
浅谈JavaScript函数参数的可修改性问题
2013/12/05 Javascript
JS判断客服QQ号在线还是离线状态的方法
2015/01/13 Javascript
HTML+CSS+JS实现完美兼容各大浏览器的TABLE固定列
2015/04/26 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
javascript实现图片轮播效果
2016/01/20 Javascript
AnjularJS中$scope和$rootScope的区别小结
2016/09/18 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
vue增加强缓存和版本号的实现方法
2019/05/01 Javascript
layui select 禁止点击的实现方法
2019/09/05 Javascript
Vue computed 计算属性代码实例
2020/04/22 Javascript
Vue管理系统前端之组件拆分封装详解
2020/08/23 Javascript
[02:05]DOTA2完美大师赛趣味视频之看我表演
2017/11/18 DOTA
Python素数检测的方法
2015/05/11 Python
剖析Python的Twisted框架的核心特性
2016/05/25 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
浅析PyTorch中nn.Linear的使用
2019/08/18 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
python 实现在shell窗口中编写print不向屏幕输出
2020/02/19 Python
Python 获取异常(Exception)信息的几种方法
2020/12/29 Python
英国知名的皮手套品牌:Dents
2016/11/13 全球购物
猫途鹰:全球领先的旅游点评社区
2017/04/07 全球购物
理肤泉英国官网:La Roche-Posay英国
2019/01/14 全球购物
曼城官方网上商店:Manchester City
2019/09/10 全球购物
护理工作感言
2014/01/16 职场文书
语文教学随笔感言
2014/02/18 职场文书
关于倡议书的范文
2015/04/29 职场文书
JVM上高性能数据格式库包Apache Arrow入门和架构详解(Gkatziouras)
2021/05/26 Servers
基于HTML十秒做出淘宝页面
2021/10/24 HTML / CSS