亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 > php教程 > PHP源碼 > 正文

PHP for SQLSrv 操作類

不言
發(fā)布: 2018-05-15 10:10:15
原創(chuàng)
4794人瀏覽過

跳至 [1] [2]?[全屏預覽]

<?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 class="brush:php;toolbar:false">請先安裝 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;
   }

   /**
    * 連接數(shù)據(jù)庫
    * @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;
   }

   /**
    * 執(zhí)行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;
}

   /**
    * 獲取一條數(shù)據(jù)(一維數(shù)組)
    * @param $sql
    * @return array|bool
    */
   public function find($sql)
   {
       $this->result = $this->query($sql);
       $args = $this->fetch_array($this->result);
       return $args ;
   }

   /**
    * 獲取多條(二維數(shù)組)
    * @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;
   }

   /**
    * 對象轉數(shù)組
    * @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 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);
   }

   /**
    * 關閉數(shù)據(jù)庫連接
    * @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>" : '';
       exit("<pre class="brush:php;toolbar:false">{$_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);
   }

   /**
    * 析構函數(shù),關閉數(shù)據(jù)庫,垃圾回收
    */
   public function __destruct()
   {
       if(!is_resource($this->connid)){
           return;
       }

       $this->free_result($this->result);
       $this->close();
   }
}
登錄后復制

2.?[代碼]使用方法?跳至 [1] [2]?[全屏預覽]

<?php
require "database/sqlsrv_driver.php";     //導入數(shù)據(jù)庫操作類

$_db = array( //數(shù)據(jù)庫連接信息
   'hostname' => 'localhost', //主機地址
   'username' => 'sa', //用戶名
   'password' => '123', //密碼
   'dbname' => 'test_db', //數(shù)據(jù)庫名
   'port' => 1433, //端口  默認1433
);
$db = SQLSrv::getdatabase($_db); //數(shù)據(jù)庫連接

#最終 $db 就是你的數(shù)據(jù)庫實例

#查詢示例
$sql = "select * from table1";

#查詢單條:
$result = $db->find($sql);

#查詢多條:
$result = $db->findAll($sql);

#執(zhí)行增刪改:
$result = $db->query($sql);

#...
登錄后復制
PHP速學教程(入門到精通)
PHP速學教程(入門到精通)

PHP怎么學習?PHP怎么入門?PHP在哪學?PHP怎么學才快?不用擔心,這里為大家提供了PHP速學教程(入門到精通),有需要的小伙伴保存下載就能學習啦!

下載
相關標簽:
來源:php中文網(wǎng)
本文內容由網(wǎng)友自發(fā)貢獻,版權歸原作者所有,本站不承擔相應法律責任。如您發(fā)現(xiàn)有涉嫌抄襲侵權的內容,請聯(lián)系admin@php.cn
作者最新文章
最新問題
開源免費商場系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關于我們 免責申明 意見反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓,幫助PHP學習者快速成長!
關注服務號 技術交流群
PHP中文網(wǎng)訂閱號
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時隨地碎片化學習
PHP中文網(wǎng)抖音號
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號