php sqlsrv 类,PHP for SQLSrv 操作类
跳至 [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("
請先安裝 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 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
" : '';
exit("
{$_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();
}
}
2. [代碼]使用方法 跳至 [1] [2] [全屏預覽]<?php
require "database/sqlsrv_driver.php"; //導入數據庫操作類
$_db = array( //數據庫連接信息
'hostname' => 'localhost', //主機地址
'username' => 'sa', //用戶名
'password' => '123', //密碼
'dbname' => 'test_db', //數據庫名
'port' => 1433, //端口 默認1433
);
$db = SQLSrv::getdatabase($_db); //數據庫連接
#最終 $db 就是你的數據庫實例
#查詢示例
$sql = "select * from table1";
#查詢單條:
$result = $db->find($sql);
#查詢多條:
$result = $db->findAll($sql);
#執行增刪改:
$result = $db->query($sql);
#...
本文原創發布php中文網,轉載請注明出處,感謝您的尊重!
總結
以上是生活随笔為你收集整理的php sqlsrv 类,PHP for SQLSrv 操作类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓java百度人脸识别SDK简单使用
- 下一篇: IntelliJ IDEA 2019 配