<?php
/*** SqlServer操作类(sqlsrv)* Class SQLSrv*/class SQLSrv{private $dbhost;private $dbuser;private $dbpw;private $dbname;private $port;private $result;private $connid = 0;private $insertid = 0;private $cursor = 0;public static $instance = null;public function __construct($db){function_exists("sqlsrv_connect") or die("<pre>请先安装 sqlsrv 扩展。");$this->dbhost = !empty($db['hostname']) ? $db['hostname'] : 'localhost';$this->dbuser = $db['username'];$this->dbpw = $db['password'];$this->dbname = $db['dbname'];$this->port = !empty($db['port']) ? $db['port'] : 1433;$this->connect();}public static function getdatabase($db){if(empty(self::$instance)){self::$instance = new SQLSrv($db);}return self::$instance;}/*** 连接数据库* @return int*/private function connect(){$serverName = "{$this->dbhost}, {$this->port}";$connectionInfo = array( "Database"=>$this->dbname, "UID"=>$this->dbuser, "PWD"=>$this->dbpw);if(!$this->connid = @sqlsrv_connect($serverName, $connectionInfo)){$this->halt(print_r( sqlsrv_errors(), true));}return $this->connid;}/*** 执行sql* @param $sql* @return mixed*/public function query($sql){if(empty($sql)){$this->halt('SQL IS NULL!');}$result = sqlsrv_query($this->connid, $sql);if(!$result){  //调试用,sql语句出错时会自动打印出来$this->halt('MsSQL Query Error', $sql);}$this->result = $result;return $this->result;}/*** 获取一条数据(一维数组)* @param $sql* @return array|bool*/public function find($sql){$this->result = $this->query($sql);$args = $this->fetch_array($this->result);return $args ;}/*** 获取多条(二维数组)* @param $sql* @param string $keyfield* @return array*/public function findAll($sql, $keyfield = ''){$array = array();$this->result = $this->query($sql);while($r = $this->fetch_array($this->result)){if($keyfield){$key = $r[$keyfield];$array[$key] = $r;}else{$array[] = $this->objectToArray($r);}}return $array;}/*** 对象转数组* @param $obj* @return array*/private function objectToArray($obj){$ret = array();foreach ($obj as $key => $value) {if (gettype($value) == "array" || gettype($value) == "object"){$ret[$key] =  $this->objectToArray($value);}else{$ret[$key] = $value;}}return $ret;}public function fetch_array($query, $type = SQLSRV_FETCH_ASSOC){if(is_resource($query)) return sqlsrv_fetch_array($query, $type);if($this->cursor < count($query)){return $query[$this->cursor++]; }return FALSE; }public function get_one($sql){$this->result = $this->query($sql);$args = $this->fetch_array($this->result);return $args ;}public function affected_rows(){return sqlsrv_rows_affected($this->connid);}public function num_rows($query){return is_array($query) ? count($query) : sqlsrv_num_rows($query);}public function num_fields($query){return sqlsrv_num_fields($query);}/*** 释放连接资源* @param $query*/public function free_result($query){if(is_resource($query)) @sqlsrv_free_stmt($query);}public function insert_id(){return $this->insertid;}public function fetch_row($query){return sqlsrv_num_rows($query);}/*** 关闭数据库连接* @return bool*/public function close(){return sqlsrv_close($this->connid);}/*** 抛出错误* @param string $message* @param string $sql*/public function halt($message = '', $sql = ''){$_sql = !empty($sql) ? "MsSQL Query:$sql <br>" : '';echo ("<pre>{$_sql}Message:$message");}/*** 开始一个事务.*/public function begin(){return sqlsrv_begin_transaction($this->connid);}/*** 提交一个事务.*/public function commit(){return sqlsrv_commit($this->connid);}/*** 回滚一个事务.*/public function rollback(){return sqlsrv_rollback($this->connid);}/*** 返回服务器信息* @return array*/public static function serverInfo(){return sqlsrv_server_info($this->connid);}/*** 返回客户端信息* @return array|null*/public static function clientInfo(){return sqlsrv_client_info($this->connid);}/*** 析构函数,关闭数据库,垃圾回收*/public function __destruct(){if(!is_resource($this->connid)){return;}$this->free_result($this->result);$this->close();}}

调用方法

$dbss['hostname']='localhost';
$dbss['username']='sa';
$dbss['password']='111111';
$dbss['dbname']='text';$msdb=new SQLSrv($dbss);
//查询
$query=$msdb->query("select * from table");
while($rs=$msdb->fetch_array($query)){print_r($rs);
}
//增 删除 改
$msdb->query("delete from table");
$msdb->query("update table set xxx='123' where id='1'");
$msdb->query("INSERT INTO table ([id], [title]) VALUES ('1', '年休假1')");//注意查询处理的中文默认是gbk编码 需要转化
//写入数据库时也需要转成gbk

PHP7.3 sqlserver2008 类相关推荐

  1. php7 匿名继承类_PHP7中的匿名类使用方法_后端开发

    PHP 微服务集群搭建 - Hyperf_后端开发 Hyperf 是基于 Swoole 4.4+ 实现的高性能.高灵活性的 PHP 协程框架,内置协程服务器及大量常用的组件,性能较传统基于 PHP-F ...

  2. php7 匿名继承类_PHP7匿名类的用法示例

    本文实例讲述了PHP7匿名类的用法.分享给大家供大家参考,具体如下: /** * Created by PhpStorm. * User: Itboot * Date: 2019/1/17 * Tim ...

  3. php7 实战 新闻类,楼+之PHP7实战第1期

    楼+ 之 PHP7 实战 6周实践成为 PHP 初级工程师 40个编程实验,23个挑战作业,7次作业直播 楼+ 是实验楼精心打造的教学产品,课程由实验楼一线核心研发人员和首席技术专家制作,且提供导师直 ...

  4. 怎么访问原生php类,关于如何利用php的原生类进行XSS

    在CTF中,这一类型的题目一般会在代码中给出反序列化点,但是却找不到pop链,类似于[BJDCTF 2nd]xss之光这一题,通过GitHack下载代码后,发现如下: 我们可以看到题目代码给出了反序列 ...

  5. config.class.php,The EventConfig class - PHP 7 中文文档

    (PECL event >= 1.2.6-beta) 简介 Represents configuration structure which could be used in construct ...

  6. 自己搜集编写的Delphi 通用函数

    { ********************************************************************** } { Currency Common Functio ...

  7. PHP7语法知识(三):时间与日期、表单、类与对象、正则表达式、错误异常处理、图像处理...

    时间与日期 一.设置时区 1.在配置文件中设置: 2.通过data_default_timezone_set函数在文件中设置: 二.获取当前时间 三.常用时间处理方法 1.格式化时间显示: 2.计算时 ...

  8. php7实现http和https请求web服务-通用工具类

    前段时间做微信开发,因微信有众多接口调用,因此自己整理了一套比较通用的工具类,用以做接口 调用,考虑到方便性和简洁性,这里选择使用php的curl扩展库来实现 1 curl启用和apache的配置 先 ...

  9. CentOS7 php7.0 升级到php7.3

    不要问我为什么要升级,我不是运维.如果你也不是运维的话,而且是公司的服务器的话,那你还是要慎重啊,我他么的就这样填了一天的坑,简单记录一下这坑爹的一天 备份之前的php7.0(这很重要,非常重要) 如 ...

最新文章

  1. 一文读懂Python版的十大经典排序算法(附动图演示)
  2. 我猜后台管理路径猜解
  3. Visual Code 快捷创建HTML,CSS和Class
  4. jQuery的Validate插件
  5. 心电信号的PQRST模拟matlab代码(转载+自己调研汇总)
  6. php snoopy视频教程,php的Snoopy类
  7. 使用cppcheck检测代码警告、错误
  8. android 申请拍照权限,React Native模块之Permissions权限申请的实例相机
  9. windows下的安装与使用curl实现命令行访问Web网站
  10. 《统计学习方法》—— 感知机对偶算法、推导以及python3代码实现(二)
  11. [Java] 蓝桥杯PREV-3 历届试题 带分数
  12. LeetCode Rearrange String k Distance Apart
  13. centos更新163源并升级内核
  14. java selector wakeup_Selector
  15. 常用的3dsmax插件(批处理模型的插件)
  16. Altium Designer之多图纸设计
  17. 三、pytest接口自动化之pytest中setup/teardown,setup_class/teardown_class讲解
  18. 这40个冷知识,据说只有1%的人知道……颠覆你的认知!
  19. 传播模型——简单的元胞自动机(3)
  20. Graph Self-Supervised Learning: A Survey

热门文章

  1. 行业深度AMA |PERI Finance:去中心化金融(DeFi)与合成资产
  2. Google Glass——个人移动设备的技术革新
  3. 使用ThinkPad T61有感
  4. HCIE之路-1 华为数据通信基础思维导图(不定期更新,纯个人理解,欢迎批评指正!!!)
  5. html中字体大写怎么写,CSS 字体属性
  6. 如何利用 DITA 实现高效的跨部门内容共享?
  7. ROS 2 Humble Hawksbill 命令基础
  8. vs2005的无法附加,绑定句柄无效的错误
  9. 设计自己的异常类表示对负数求平方根的错误;从键盘输入一个数,若输入的数不小于0,则输出它的平方根;若小于0,则抛出自定义异常;在程序中处理异常并输出提示信息“输入错误,不能对负数求平方根”
  10. 太好了!好多好多偏方