热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

PHP程序中操作MSSQL数据库的封装类

?phpclasssql{private$link;//连接资源private$result;//查询结果private$num0;//结果行数private$paramsarray();//参数数组private$sqlstr;//当前执行的SQL语句或存储过程//构造函数,默认连接本机,master数据库,账号sa

class sql
{
    private $link;//连接资源
    private $result;//查询结果
    private $num = 0;//结果行数
    private $params = array();//参数数组
    private $sqlstr;//当前执行的SQL语句或存储过程
    //构造函数,默认连接本机,master数据库,账号sa,空密码
    public function __construct($addr = "127.0.0.1", $db = "master", $user = "sa", $pwd = "123456")
    {
        if (!$this->connect($addr, $db, $user, $pwd))
        {
throw new Exception("无法连接数据库");
        }
    }
    //析构函数,关闭数据库连接
    public function __destruct()
    {
$this->clear($this->result);
        $this->close();
    }
    //执行sql语句或存储过程
    public function execute($sql)
    {       
        if (!$this->isProc($sql))
        {
$stmt = mssql_init($sql, $this->link);
$param = array_keys($this->params);
$value = array_values($this->params);
for ($i = 0, $j = count($this->params); $i <$j; $i++)
{
(gettype($value) == integer) ? $sqlType = SQLINT1 : $sqlType = SQLVARCHAR;
mssql_bind($stmt, $param[$i], $value[$i], $sqlType, false);
}
if (!($this->result = mssql_execute($stmt)))
{
throw new Exception("存储过程执行出错");
}
unset($stmt);           
        }
        else
{           
if (!($this->result = @mssql_query($sql, $this->link)))
{
throw new Exception("SQL语句执行出错");
}
        }
        $this->sqlstr = $sql;
unset($this->params);
        return $this->result;
    }
    //返回执行的SQL语句
    public function getSqlStr()
    {
        return $this->sqlstr;
    }
    //获取返回的行数
    public function getRowNum($sql)
    {
$this->execute($sql);
        $this->num = mssql_num_rows($this->result);
        return  $this->num;
    }
    //查询后直接返回json格式数据
    public function getJsonResult($sql,$num)
    {
$this->execute($sql);
        return $this->toJson($num);
    }
    //添加存储过程参数,同时返回添加后的参数数组
    public function addParam($param, $value)
    {
       $this->params[$param] = $value;
       return $this->params;
    }   
    //转换为json格式
    private function toJson($num)
    {
        if (!$this->result) return;
        $num == 0 ? $num = mssql_num_fields($this->result) : $num;
        while($row = mssql_fetch_object($this->result))
        {
foreach ($row as $key=>$val)
{
$rows[$key] = urlencode(iconv("gbk","utf-8",$val));
}
$arr[] = $rows;
        }
        $str = $_GET["callback"].'({"totalCount":"'.$num.'","data":'.json_encode($arr).'})';
        return urldecode(iconv("utf-8","gbk",$str));
    }
    //判断是否存储过程
    private function isProc($str)
    {
        return preg_match("/insert/b/",$str) || preg_match("/update/b/",$str) ||
preg_match("/delete/b/",$str) || preg_match("/select/b/",$str);
    }
    //连接数据库,返回数据库连接资源
    private function connect($addr, $db, $user, $pwd)
    {
        if ($this->link = @mssql_connect($addr, $user, $pwd, true))
        {
return @mssql_select_db($db, $this->link) ? true : false;
        }
        else
        {
throw new Exception("无法连接数据库");
        }
    }   
    //清除数据库连接资源
    private function clear($query)
    {
        if ($query) mssql_free_result($query);
    }
    //关闭数据库连接
    private function close()
    {
        if ($this->link) mssql_close($this->link);
    }
}
?>

使用举例:

require_once("sql.php");
class user
{
    private $sql;
    private $func;
    public function __construct()
    {
        $this->sql = new sql();
    }
    public function login($user, $pwd)
    {
        $str = "select * from t_user where username='$user' and password='$pwd'";
        if ($this->sql->getRowNum($str) != 0)
        {
session_start();
$_SESSION["username"] = $user;
echo "{success:true, username:$user}";
        }
        else
        {
echo "{success:false}";
        }
    }
    public function search($username, $dept, $start, $limit)
    {
        $str = "select * from t_user where 1=1";

        $num = $this->sql->getRowNum($str);
        $str = "select top $limit * from t_user where ";
        $str .= " username not in (select top $start username from t_user order by username desc)";
        $str .= " order by username desc";
        echo $this->sql->getJsonResult($str, $num);
    }
}
?>

例子都是返回Json字符串的,我这里主要是方便前端接口,例如ExtJs。


推荐阅读
  • 本文探讨了如何通过最小生成树(MST)来计算严格次小生成树。在处理过程中,需特别注意所有边权重相等的情况,以避免错误。我们首先构建最小生成树,然后枚举每条非树边,检查其是否能形成更优的次小生成树。 ... [详细]
  • OPPO黄页服务即将停止
    OPPO黄页服务因业务调整即将停止,用户需了解具体卸载路径及受影响的机型。 ... [详细]
  • 本文详细介绍了暂估入库的会计分录处理方法,包括账务处理的具体步骤和注意事项。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 深入理解OAuth认证机制
    本文介绍了OAuth认证协议的核心概念及其工作原理。OAuth是一种开放标准,旨在为第三方应用提供安全的用户资源访问授权,同时确保用户的账户信息(如用户名和密码)不会暴露给第三方。 ... [详细]
  • 极大似然估计(MLE)及其3D可视化解析
    本文详细介绍了极大似然估计(Maximum Likelihood Estimation, MLE)的推导过程,并通过3D可视化展示其在概率密度函数中的应用。我们将探讨如何利用MLE来估计参数,以及它在实际问题中的重要性。 ... [详细]
  • 2023 ARM嵌入式系统全国技术巡讲旨在分享ARM公司在半导体知识产权(IP)领域的最新进展。作为全球领先的IP提供商,ARM在嵌入式处理器市场占据主导地位,其产品广泛应用于90%以上的嵌入式设备中。此次巡讲将邀请来自ARM、飞思卡尔以及华清远见教育集团的行业专家,共同探讨当前嵌入式系统的前沿技术和应用。 ... [详细]
  • 本文介绍如何解决在 IIS 环境下 PHP 页面无法找到的问题。主要步骤包括配置 Internet 信息服务管理器中的 ISAPI 扩展和 Active Server Pages 设置,确保 PHP 脚本能够正常运行。 ... [详细]
  • Python 异步编程:深入理解 asyncio 库(上)
    本文介绍了 Python 3.4 版本引入的标准库 asyncio,该库为异步 IO 提供了强大的支持。我们将探讨为什么需要 asyncio,以及它如何简化并发编程的复杂性,并详细介绍其核心概念和使用方法。 ... [详细]
  • 探讨一个老旧 PHP MySQL 系统中,时间戳字段不定期出现异常值的问题及其可能原因。 ... [详细]
  • 国内BI工具迎战国际巨头Tableau,稳步崛起
    尽管商业智能(BI)工具在中国的普及程度尚不及国际市场,但近年来,随着本土企业的持续创新和市场推广,国内主流BI工具正逐渐崭露头角。面对国际品牌如Tableau的强大竞争,国内BI工具通过不断优化产品和技术,赢得了越来越多用户的认可。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 郑州大学在211高校中的地位与排名解析
    本文将详细解读郑州大学作为一所位于河南省的211和双一流B类高校,在全国211高校中的地位与排名,帮助高三学生更好地了解这所知名学府的实力与发展前景。 ... [详细]
  • 深入理解 Oracle 存储函数:计算员工年收入
    本文介绍如何使用 Oracle 存储函数查询特定员工的年收入。我们将详细解释存储函数的创建过程,并提供完整的代码示例。 ... [详细]
  • 优化ASM字节码操作:简化类转换与移除冗余指令
    本文探讨如何利用ASM框架进行字节码操作,以优化现有类的转换过程,简化复杂的转换逻辑,并移除不必要的加0操作。通过这些技术手段,可以显著提升代码性能和可维护性。 ... [详细]
author-avatar
CHERRYMJM
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有