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 相关文章推荐
杏林同学录(三)
Oct 09 PHP
php设计模式 Factory(工厂模式)
Jun 26 PHP
Apache实现Web Server负载均衡详解(不考虑Session版)
Jul 05 PHP
PHP运行SVN命令显示某用户的文件更新记录的代码
Jan 03 PHP
codeigniter框架批量插入数据
Jan 09 PHP
PHP中__FILE__、dirname与basename用法实例分析
Dec 01 PHP
PHP实现的进度条效果详解
May 03 PHP
Zend Framework实现自定义过滤器的方法
Dec 09 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP基于cookie实现统计在线人数功能示例
Jan 16 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
Jul 20 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
Dec 12 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
Apache2 httpd.conf 中文版
2006/12/06 PHP
php针对cookie操作的队列操作类实例
2014/12/10 PHP
利用switch语句进行多选一判断的实例代码
2016/11/14 PHP
翻译整理的jQuery使用查询手册
2007/03/07 Javascript
Javascript中的变量使用说明
2010/05/18 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
JQuery实现可直接编辑的表格
2015/04/16 Javascript
jQuery无刷新切换主题皮肤实例讲解
2015/10/21 Javascript
谈谈JavaScript类型系统之Math
2016/01/06 Javascript
星期几的不同脚本写法(推荐)
2016/06/01 Javascript
jQuery Validate插件实现表单验证
2016/08/19 Javascript
在js中实现邮箱格式的验证方法(推荐)
2016/10/24 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
[03:14]DOTA2斧王 英雄基础教程
2013/11/26 DOTA
在Python中操作字典之clear()方法的使用
2015/05/21 Python
python3实现读取chrome浏览器cookie
2016/06/19 Python
Python callable()函数用法实例分析
2018/03/17 Python
浅谈python常用程序算法
2019/03/22 Python
python 设置xlabel,ylabel 坐标轴字体大小,字体类型
2019/07/23 Python
pytorch 实现tensor与numpy数组转换
2019/12/27 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
keras 使用Lambda 快速新建层 添加多个参数操作
2020/06/10 Python
python中tkinter窗口位置\坐标\大小等实现示例
2020/07/09 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
常用的10个Python实用小技巧
2020/08/10 Python
python爬取音频下载的示例代码
2020/10/19 Python
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
如何用Java实现列出某个目录下的所有子目录
2015/07/20 面试题
国家助学金获奖感言
2014/01/31 职场文书
好人好事演讲稿
2014/09/01 职场文书
幼儿园中班个人总结
2015/02/28 职场文书
庆七一主持词
2015/06/29 职场文书
毕业生求职自荐信(2016最新版)
2016/01/28 职场文书
创业计划书之废品回收
2019/09/26 职场文书
python爬取新闻门户网站的示例
2021/04/25 Python
php png失真的原因及解决办法
2021/10/24 PHP