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版(3)
Oct 09 PHP
PHP小技巧搜集,每个PHPer都来露一手
Jan 02 PHP
PHP Header用于页面跳转要注意的几个问题总结
Oct 03 PHP
PHP Ajax中文乱码问题解决方法
Feb 27 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
php数组添加元素方法小结
Dec 20 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
详解Grunt插件之LiveReload实现页面自动刷新(两种方案)
Jul 31 PHP
yii框架无限极分类的实现方法
Apr 08 PHP
PHP实现基于状态的责任链审批模式详解
May 31 PHP
PHP实现简单用户登录界面
Oct 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
Terran建筑一览
2020/03/14 星际争霸
PHP防止注入攻击实例分析
2014/11/03 PHP
PHP基于imap获取邮件实例
2014/11/11 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
laravel5.4利用163邮箱发送邮件的步骤详解
2017/09/22 PHP
PHP数组式访问接口ArrayAccess用法分析
2017/12/28 PHP
简单的代码实现jquery定时器
2014/01/03 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
web前端设计师们常用的jQuery特效插件汇总
2014/12/07 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
js+html5获取用户地理位置信息并在Google地图上显示的方法
2015/06/05 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
jQuery获取及设置表单input各种类型值的方法小结
2016/05/24 Javascript
jQuery图片左右滚动代码 有左右按钮实例
2016/06/20 Javascript
概述VUE2.0不可忽视的很多变化
2016/09/25 Javascript
使用ionic切换页面卡顿的解决方法
2016/12/16 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
详解VUE 定义全局变量的几种实现方式
2017/06/01 Javascript
关于webpack2和模块打包的新手指南(小结)
2017/08/07 Javascript
JS实现网页抢购功能(触发,终止脚本)
2017/11/27 Javascript
Vue.js实现的表格增加删除demo示例
2018/05/22 Javascript
jQuery实现的简单拖拽功能示例【测试可用】
2018/08/14 jQuery
jQuery实现的老虎机跑动效果示例
2018/12/29 jQuery
vue 自动化路由实现代码
2019/09/03 Javascript
用Nodejs实现在终端中炒股的实现
2020/10/18 NodeJs
python中with用法讲解
2020/02/07 Python
html5中canvas图表实现柱状图的示例
2017/11/13 HTML / CSS
赫里福德的一家乡村零售商店:Philip Morris & Son
2017/06/25 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
初中三年学生的学习自我评价
2013/11/13 职场文书
幼儿园庆六一游园活动方案
2014/01/29 职场文书
小学教师国培感言
2014/02/08 职场文书
党员自我批评与反省材料
2014/02/10 职场文书
益达广告词
2014/03/14 职场文书
给女朋友的道歉短信
2015/05/12 职场文书
Mysql中的触发器定义及语法介绍
2022/06/25 MySQL