PHP7.3 sqlserver2008 类
生活随笔
收集整理的這篇文章主要介紹了
PHP7.3 sqlserver2008 类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?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 类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: snv报错
- 下一篇: 利用phpstudy(小皮面板)配置本地