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 相关文章推荐
二十行语句实现从Excel到mysql的转化
Oct 09 PHP
Linux下进行MYSQL编程时插入中文乱码的解决方案
Mar 15 PHP
php一个找二层目录的小东东
Aug 02 PHP
关于使用coreseek并为其做分页的介绍
Jun 21 PHP
PHP分页详细讲解(有实例)
Oct 30 PHP
PHP+jQuery 注册模块的改进(三):更新到Smarty3.1
Oct 14 PHP
Laravel框架中实现使用阿里云ACE缓存服务
Feb 10 PHP
解决PHP里大量数据循环时内存耗尽的方法
Oct 10 PHP
php批量删除操作代码分享
Feb 26 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
php实现的AES加密类定义与用法示例
Jan 29 PHP
PHP number_format函数原理及实例解析
Jul 14 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
叶罗丽:为什么大家对颜冰这对CP非常关心,却对金茉两人十分冷漠
2020/03/17 国漫
PHP中创建图像并绘制文字的例子
2014/11/19 PHP
php为字符串前后添加指定数量字符的方法
2015/05/04 PHP
Docker搭建自己的PHP开发环境
2018/02/24 PHP
PHP使用PDO创建MySQL数据库、表及插入多条数据操作示例
2019/05/30 PHP
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
Javascript根据指定下标或对象删除数组元素
2012/12/21 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
2014/04/04 Javascript
node.js中的http.createServer方法使用说明
2014/12/14 Javascript
JavaScript中的console.log()函数详细介绍
2014/12/29 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
AngularJS基础 ng-copy 指令实例代码
2016/08/01 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
jQuery UI Grid 模态框中的表格实例代码
2017/04/01 jQuery
vuex页面刷新后数据丢失的方法
2019/01/17 Javascript
Vue使用vue-recoure + http-proxy-middleware + vuex配合promise实现基本的跨域请求封装
2019/10/21 Javascript
python+mongodb数据抓取详细介绍
2017/10/25 Python
python skimage 连通性区域检测方法
2018/06/21 Python
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
python中如何实现将数据分成训练集与测试集的方法
2019/09/13 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
Python3查找列表中重复元素的个数的3种方法详解
2020/02/13 Python
Python获取浏览器窗口句柄过程解析
2020/07/25 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
如何用Django处理gzip数据流
2021/01/29 Python
HTML5实现应用程序缓存(Application Cache)
2020/06/16 HTML / CSS
Expedia瑞典官网:预订度假屋、酒店、汽车租赁、机票等
2021/01/23 全球购物
介绍一下Ruby的特点
2013/01/20 面试题
微笑服务标语
2014/06/24 职场文书
教师先进个人材料
2014/12/17 职场文书
工作时间证明
2015/06/15 职场文书
老人院义工活动感想
2015/08/07 职场文书
PyTorch的Debug指南
2021/05/07 Python
MySQL视图概念以及相关应用
2022/04/19 MySQL
关于MySQL中explain工具的使用
2023/05/08 MySQL