从此不求人:自主研发一套PHP前端开发框架(14)
2016-04-07 17:53
471 查看
支持sqlserver调用
微软写了一个专门php+mssql的库
下载地址:
http://www.microsoft.com/en-us/download/details.asps?id=20098
PHP从5.3.x开始官方不再支持mssql的拓展库
但是假设我们的框架中需要连接sqlserver该怎么办?微软写了一个专门php+mssql的库
下载地址:
http://www.microsoft.com/en-us/download/details.asps?id=20098
<?php require("adodb.inc.php"); class myDataBase { //数据库处理类 public $_dbAddr="localhost"; //数据库服务器IP public $_dbName="onethink"; //数据库名 public $_dbUser="root"; //用户名 public $_dbPwd="root";//密码 public $_dbType='mysqli'; public $_db=false; //内部实例化过后的数据库连接对象 function myDataBase($dbtype='mysqli') // __construct { $this->_dbType = $dbtype ? $dbtype :'mysqli'; //写一些数据库 connect 过程 $this->initConnect(); } function __destruct() //析构函数 { if($this->_db && $this->_db->IsConnected()) { $this->_db->disconnect(); unset($this->_db); } } function initConnect() { switch ($this->_dbType) { case 'mysqli': //mysql 连接方式 //sqlserver和oracle略有不同,后面再讲 $this->_db=NewADOConnection("mysqli");//php5 之后的增强版驱动 $this->_db->connect($this->_dbAddr,$this->_dbUser,$this->_dbPwd,$this->_dbName); $this->_db->Query("set names utf8"); //客户端编码 $this->_db->SetFetchMode(ADODB_FETCH_ASSOC); //执行查询 返回的数组的key 就是字段名 break; case 'mssql': $this->_db=NewADOConnection("mssqlnative");//php5 之后的增强版驱动 $this->_db->connect($this->_dbAddr,$this->_dbUser,$this->_dbPwd,$this->_dbName); break; case 'oracle': //使用oracle数据库 break; default: //使用 break; } } function execForNothing($sql)// 执行一个sql语句,不返回任何值 { $this->_db->Execute($sql); } function execForArray($sql) { //执行一个sql语句 ,返回类型是数组 $result=$this->_db->Execute($sql); if($result) { $returnArray=array(); while(!$result->EOF) { $returnArray[]=$result->fields; $result->MoveNext(); } return $returnArray; } else return false; } function execForOne($sql) { //执行一个sql语句 ,返回 单列字符串 $result=$this->_db->GetOne($sql); //adodb的函数,来获取单个值 return $result; } function execForTrac($sqllist,$resulttype) //用事务 来执行 { //$sqllist 参数 是sql数组 $type=array("none","string","array","int"); //返回类型 if(!in_array($resulttype,$type)) return false; if(count($sqllist)==0) return false; $this->_db->BeginTrans(); //开启事务 $sqlindex=0; $ret=false; foreach($sqllist as $sql) { if($sqlindex==(count($sqllist)-1)) //最后一个语句 需要根据返回类型来做不同的处理 { if($resulttype=="none") { $this->_db->Execute($sql); } else if($resulttype=="array") { $ret=$this->execForArray($sql); } else if($resulttype=="int" || $resulttype=="string") { $ret=$this->execForOne($sql); } else { $ret=$this->execForArray($sql); } } else $this->_db->Execute($sql); $sqlindex++; } if($ret){ $this->_db->CommitTrans(); }else{ $this->_db->RollbackTrans(); } return $ret; } } ?>
相关文章推荐
- jsonp 工作原理
- JSP中EL表达式日期格式化
- 前端学习之HTML基础标签(1)
- 从此不求人:自主研发一套PHP前端开发框架(13)
- jQuery最佳实践
- JS格式化日字符串
- 剑指Offer——n个骰子扔出点数和S的概率
- zepto.js的事件处理
- Angular.js 学习笔记
- JavaScript 左右上下自动晃动,自动移动。
- css实现固定高度及未知高度文字垂直居中的完美解决方案
- bootstrap-fileInput
- 深入剖析CSS变形transform(3d)
- 预防阻塞的方法
- OC与JS的简单交互
- Extjs问题——windows包容多组件
- 剑指offer 18
- DataNode本地数据存储和管理--ncp_block_verification.log.curr和dncp_block_verification.log.prev
- SharePoint2010 IT Professional - Document Conversion
- js 小键盘需求