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 相关文章推荐
对javascript和select部件的结合运用
Oct 09 PHP
一些PHP写的小东西
Dec 06 PHP
PHP memcache扩展的三种安装方法
Apr 26 PHP
php若干单维数组遍历方法的比较
Sep 20 PHP
PHP If Else(elsefi) 语句
Apr 07 PHP
php中\r \r\n \t的区别示例介绍
Feb 08 PHP
php分页示例分享
Apr 30 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
php在数据库抽象层简单使用PDO的方法
Nov 03 PHP
浅谈php中fopen不能创建中文文件名文件的问题
Feb 06 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 PHP
PHP 构造函数和析构函数原理与用法分析
Apr 21 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 fckeditor 调用的函数
2009/06/21 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
php数据入库前清理 注意php intval与mysql的int取值范围不同
2010/12/12 PHP
php调用nginx的mod_zip模块打包ZIP文件
2014/06/11 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
php获取'/'传参的值简单方法
2017/07/13 PHP
Laravel用户授权系统的使用方法示例
2018/09/16 PHP
PHP Include文件实例讲解
2019/02/15 PHP
laravel实现按时间日期进行分组统计方法示例
2019/03/23 PHP
javascript 操作文件 实现方法小结
2009/07/02 Javascript
JQuery下的Live方法和$.browser方法使用代码
2010/06/02 Javascript
JavaScript中获取元素索引的函数
2010/09/10 Javascript
JS动态日期时间的获取方法
2015/09/28 Javascript
js实现加载更多功能实例
2016/10/27 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
浅谈在fetch方法中添加header后遇到的预检请求问题
2017/08/31 Javascript
如何在JS文件中获取Vue组件
2020/09/16 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
python如何发布自已pip项目的方法步骤
2018/10/09 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
详解Python并发编程之创建多线程的几种方法
2019/08/23 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
CSS3实现时间轴效果
2016/07/11 HTML / CSS
css3实现二维码扫描特效的示例
2020/10/29 HTML / CSS
html5指南-2.如何操作document metadata
2013/01/07 HTML / CSS
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
海量信息软件测试笔试题
2015/08/08 面试题
竞聘医务工作人员的自我评价分享
2013/11/04 职场文书
会议欢迎标语
2014/06/30 职场文书
优秀班主任推荐材料
2014/12/17 职场文书
淘宝好评语句大全
2014/12/31 职场文书
采购员工作总结范文
2015/08/12 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
vue-cli3.0修改打包后的文件名和文件地址,打包后本地运行报错解决
2022/04/06 Vue.js