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设计模式 Chain Of Responsibility (职责链模式)
Jun 26 PHP
php在服务器执行exec命令失败的解决方法
Mar 03 PHP
php通过Chianz.com获取IP地址与地区的方法
Jan 14 PHP
从wamp到xampp的升级之路
Apr 08 PHP
php简单实现查询数据库返回json数据
Apr 16 PHP
PHP实现清除wordpress里恶意代码
Oct 21 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
PHP页面间传递值和保持值的方法
Aug 24 PHP
php mysql操作mysql_connect连接数据库实例详解
Dec 26 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 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
用php实现选择排序的解决方法
2013/05/04 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
Thinkphp5.0自动生成模块及目录的方法详解
2017/04/17 PHP
浅谈PHP面向对象之访问者模式+组合模式
2017/05/22 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&amp;Firefox] 有文档和例子
2007/05/30 Javascript
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
深入解析AngularJS框架中$scope的作用与生命周期
2016/03/05 Javascript
Javascript基础之数组的使用
2016/05/13 Javascript
D3.js实现散点图和气泡图的方法详解
2016/09/21 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
JS实现的简单标签点击切换功能示例
2017/09/21 Javascript
微信小程序如何使用canvas二维码保存至手机相册
2019/07/15 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
js+cavans实现图片滑块验证
2020/09/29 Javascript
python使用PIL模块实现给图片打水印的方法
2015/05/22 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python实现的单向循环链表功能示例
2017/11/10 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Python 解决OPEN读文件报错 ,路径以及r的问题
2019/12/19 Python
django迁移文件migrations的实现
2020/03/31 Python
QML实现钟表效果
2020/06/02 Python
SIMON MILLER官网:洛杉矶的生活方式品牌
2020/10/19 全球购物
成龙洗发水广告词
2014/03/14 职场文书
开学寄语大全
2014/04/08 职场文书
厨师个人自我鉴定范文
2014/04/19 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
党员干部作风建设思想汇报范文
2014/10/25 职场文书
无房证明样本
2015/06/17 职场文书
开业庆典致辞
2015/08/01 职场文书
煤矿隐患排查制度
2015/08/05 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
2016年学校“3.12”植树节活动总结
2016/03/16 职场文书
Java生成读取条形码和二维码的简单示例
2021/07/09 Java/Android
《辉夜大小姐想让我告白》第三季正式预告
2022/03/20 日漫