php 获取sqlservel2008数据库数据封装类

最近工作上遇到问题,甲方数据存在sqlservel数据库中,我们需要用php去连接他们的数据库获取数据。我自己写的封装方法,使用时只需实例化对象,即可使用类文件中的方法。

SQLSRV函数

sqlsrv_begin_transaction — Begins a database transaction 注释:开始数据库事务

 

sqlsrv_cancel — Cancels a statement 注释:取消一个声明

 

sqlsrv_client_info — Returns information about the client and specified connection 注释:返回有关客户端和指定连接的信息

 

sqlsrv_close — Closes an open connection and releases resourses associated with the connection 注释:关闭打开的连接并释放与该连接关联的资源

 

sqlsrv_commit — Commits a transaction that was begun with sqlsrv_begin_transaction 注释:提交以sqlsrv_begin_transaction开始的事务

 

sqlsrv_configure — Changes the driver error handling and logging configurations 注释:更改驱动程序错误处理和日志配置

 

sqlsrv_connect — Opens a connection to a Microsoft SQL Server database 注释:打开到Microsoft SQL Server数据库的连接

 

sqlsrv_errors — Returns error and warning information about the last SQLSRV operation performed 注释:返回关于上次执行的SQLSRV操作的错误和警告信息

 

sqlsrv_execute — Executes a statement prepared with sqlsrv_prepare 注释:执行使用sqlsrv_prepare准备的语句

 

sqlsrv_fetch_array — Returns a row as an array 注释:以数组形式返回一行

 

sqlsrv_fetch_object — Retrieves the next row of data in a result set as an object 注释:检索结果集中作为对象的下一行数据

 

sqlsrv_fetch — Makes the next row in a result set available for reading 注释:使结果集中的下一行可供读取

 

sqlsrv_field_metadata — Retrieves metadata for the fields of a statement prepared by sqlsrv_prepare or sqlsrv_query 注释: 检索sqlsrv_prepare或sqlsrv_query准备的语句的字段的元数据

 

sqlsrv_free_stmt — Frees all resources for the specified statement 注释:释放指定语句的所有资源

 

sqlsrv_get_config — Returns the value of the specified configuration setting 注释:返回指定配置设置的值

 

sqlsrv_get_field — Gets field data from the currently selected row 注释:从当前选定的行获取字段数据

 

sqlsrv_has_rows — Indicates whether the specified statement has rows 注释:指示指定语句是否具有行

 

sqlsrv_next_result — Makes the next result of the specified statement active 注释:使指定语句的下一个结果活动

 

sqlsrv_num_fields — Retrieves the number of fields (columns) on a statement 注释:检索语句上的字段(列)的数量

 

sqlsrv_num_rows — Retrieves the number of rows in a result set 注释:检索结果集中的行数

 

sqlsrv_prepare — Prepares a query for execution 注释:为执行准备查询

 

sqlsrv_query — Prepares and executes a query 注释:准备并执行查询

 

sqlsrv_rollback — Rolls back a transaction that was begun with sqlsrv_begin_transaction 注释:回滚以sqlsrv_begin_transaction开始的事务

 

sqlsrv_rows_affected — Returns the number of rows modified by the last INSERT, UPDATE, or DELETE query executed 注释:返回上次执行的插入、更新或删除查询修改的行数

 

sqlsrv_send_stream_data — Sends data from parameter streams to the server 注释:将数据从参数流发送到服务器

 

sqlsrv_server_info — Returns information about the server 注释:返回关于服务器的信息

date_default_timezone_set('PRC');//设置时区
class Sqlservel{
    public $server = "PC-20180326LOTY"; //服务器名称,在 sql server management studio 的登录界面查看
    public $uid = null; //数据库用户名
    public $pwd = null; //数据库密码
    public $db = "test"; // 数据库名
    public $set = "UTF-8";//字符集
    public $conn = "";//数据库连接结果
    private $safeCheck=true;
    //构造函数
    public function __construct(){
        $connectionInfo = array("UID"=>$this->uid, "PWD"=>$this->pwd, "Database"=>$this->db,"CharacterSet"=>$this->set);//数据库的连接信息
        $this->conn = sqlsrv_connect( $this->server, $connectionInfo);//返回true 或者 false
        if($this->conn==false) {
            echo "数据库连接失败<br />";
            die( print_r( sqlsrv_errors(), true));
        }
    }

    //析构函数
    public function __destruct(){
        $this->close();
    }

    //关闭打开的连接并释放与该连接关联的资源
    public function close(){
        if($this->conn){
            sqlsrv_close($this->conn);
        }
    }

    //准备并执行查询
    public function query($sql,$params=array(),$options=array()){
        if($this->safeCheck){
            $result = sqlsrv_query($this->conn,$sql,$params,$options);
            return $result;
        }
    }

    //以数组形式返回一行
    public function fetchRow($sql){
        $res = strpos($sql,"limit");
        if($res<0){
            $sql.="limit 1";
        }
        $row = $this->query($sql);
        $arr = sqlsrv_fetch_array($row);
        //去除结果集中的关联数组
        foreach($arr as $k=>$v){
            if(is_numeric($k)){
                unset($arr[$k]);
            }
        }
        return $arr;
    }

    //以二维数组形式返回多条数据
    public function fetchRows($sql){
        $row = $this->query($sql);
        while($arr = sqlsrv_fetch_array($row)){
            //去除结果集中的关联数组
            foreach($arr as $k=>$v){
                if(is_numeric($k)){
                    unset($arr[$k]);
                }
            }
            $array[] = $arr;
        }
        return $array;
    }

    //检索结果集中的行数
    public function rowCount($sql){
        $params = array();
        $options =  array( "Scrollable" => SQLSRV_CURSOR_KEYSET );
        $result = $this->query($sql,$params,$options);
        $res = sqlsrv_num_rows($result);
        if ($res === false){
            return "检索行计数时出错";
        }else{
            return $res;
        }
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/*============================================================================== * * Filename: TSQLServer.cs * Description: 本次常用代码封装数据库通用访问: * 包含以下方法: * 1.获取数据库连接字符串,创建数据库连接命令,判断数据字符数组 * 2.执行非查询ExecuteNonQuery返回受影响的行数,增加,修改,删除, * 3.执行Sql语句返回DataRow一行数据信息 * 4.执行Sql语句返回DataTable数据信息 * 5. 执行多条SQL语句,实现数据库事务。如果插入或者修改数据运用事务时候,其中一行报错,将事务回滚。 * 6.在执行命令文本时后,传递sql语句运用Regex re = new Regex(@"@[a-zA-Z0-9]") 则正则表达式进行配匹, * 提高安全性。 * Version: 1.0 * Created: 2012.08.02 * Author: liangjw * Company: Copyright (C) Create Family Wealth Power By Peter * ==============================================================================*/ * 实用方法简单讲解,下面以TSQLServer.cs为例子: 1.我们最常用的方式就是增删改查,在使用时简单方面,例如我们需要做修改一行记录需要返回DataRow一行记录 需要调用方法调用如下: public static DataRow GetRow(params object[] values) { return TSQLServer.ExecDr("select * from [tb] where id = @1", values); } 2.返回一个DataTable数据集合调用如下: public static DataTable GetTable(object[] s = null) { return TSQLServer.ExecDt("select * from [tb] ", s); } 3.更新一条数据 public static int Update(params object[] values) { return TSQLServer.ExecuteNonQuery(@"update [tb] set test1= @1,test2= @2 where id = @id", values); } 4.插入一条数据 public static int Insert(params object[] values) { return TSQLServer.ExecuteScalar(@"insert into [tb](test1,test2) values(@1,@2);SELECT @@IDENTITY",values).ToInt32(); } * 以上该文件的代码封装是部分代码,仅供参考 * 备注信息: 上传部分自己总结的常用方法的封装,有不足和不完美之处,希望大家指出来,愿意一起 * 学习和讨论有关asp.net mvc ,Ajax ,jquery ,,html/css,xml ,sqlserver ,wpf,IIS相关技术的交流和学习。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值