使用php來訪問操作sql server
在此分成三步走:
第一部:查看配置,下載文件
首先查看自己的php和sql server版本
Php文件輸入echo PHP_VERSION 運行腳本就可以看到
如果是php7,則搭配sql server2016 ,即若你的php版本是7那么sql server必須是2016
其余的根據以下信息來搭配
SQLSRV 的版本與php的關系
Version 4.0 supports PHP 7.0+
Version 3.2 supports PHP 5.6, 5.5, and 5.4
Version 3.1 supports PHP 5.5 and 5.4
Version 3.0 supports PHP 5.4.
SQLSRV 與ODBC driver for server的關系
Version 4.0 ODBC Driver 11 或者 ODBC Driver 13.
Versions 3.2/ 3.1 ODBC Driver 11.
Version 3.0 Microsoft SQL Server 2012 Native Client x86. (若為php5.4建議使用version3.1或3.2)
ODBC driver for server 與sql server版本的關系
ODBC driver 11 支持Microsoft SQL Server 2005, 2008, 2008 R2, SQL Server 2012, SQL Server 2014 and Windows Azure SQL Database
ODBC driver 13 支持 Microsoft SQL Server 2008, SQL Server 2008 R2, SQL Server 2012, SQL Server 2014, SQL Server 2016 (Preview), Analytics Platform System, Azure SQL Database and Azure SQL Data Warehouse.
比如我的是sql server 2008 R2 和php5.5
選擇可以選擇的SQLSRV為3.1或3.2版本,對應的ODBC driver時ODBC driver11,ODBC drive11 支持的sql server中有sql server 2008 R2,所以最后選擇的是ODBC driver 11 和SQLSRV3.1或3.2
今天徒弟的機子上的環境是sql server 2016 和php7
所以選擇的是ODBC driver 13 和SQLSRV4.0
選好后下載相應的文件,下載地址如下:
ODBC Driver 11 for sql server 下載地址https://www.microsoft.com/en-us/download/details.aspx?id=36434
ODBC Driver 13 for sql server下載地址https://www.microsoft.com/en-us/download/details.aspx?id=50420
SQLSRV 下載地址https://www.microsoft.com/en-us/download/details.aspx?id=20098
第二步:安裝PHP擴展
新建一個php文件輸入<?php phpinfo() ; ?>在瀏覽器里運行php文件,找到PHP Extension Build選項

可以看到它的值里有TS或者NTS,記錄下來
查看php擴展路徑打開php安裝目錄下的php.ini 文件搜索extension_dir
查看它的值如下

雙擊下載下來的SQLSRV文件,
隨便解壓到一個路徑下,解壓后打開目錄,選擇里面的
php_pdo_sqlsrv_55_ts.dll和
php_sqlsrv_55_ts.dll兩個文件,其中的55是php版本號5.5 ,ts是PHP Extension Build選項里得出的,我本地環境是TS,如果你的是NTS 則選擇的是NTS文件
把選中的兩個文件復制到php擴展路徑下,如C://xampp/php/ext
在php.ini文件里加上如下兩行

其實就是你剛才復制的兩個文件,其中的數字55 和ts可能有所不同
保存配置文件,重啟服務器apache,運行剛才的腳本看是否有PDO_SQLSRV
如下:

若有那么恭喜你成功了第二步
第三步:安裝驅動器,設置sql server
雙擊安裝下載下來的ODBC driver文件,安裝完成后設置sql server
打開sql server management studio 使用sql server的用戶名和密碼登錄

若不能登錄則使用windows系統登錄,對着服務器名右鍵->屬性->安全性,選中”sql server和windows身份驗證模式”

保存,
點擊安全性->登錄名 對着用戶名(sa)右鍵->屬性->常規 更改密碼,狀態里選擇授予和登錄

保存編輯
重啟sql server服務看是否可以用賬號密碼登錄,只到可以登錄未止。
打開SQL SERVE R配置管理工具:
點擊sql server網絡配置協議在右側啟動TCP/IP,對TCP/IP右鍵->啟動,右鍵->屬性->IP地址,在最下方的IPALL 里的TCP發端口改為1433

保存,同時對客戶端協議做同樣的操作,重啟sql server服務
到此第三步完成
測試:新建PHP文件,輸入如下代碼:
<?php
class sql{
private $serverName = "LXBDELL\SQLEXPRESS"; //sql server鏈接實例名
private $connectionInfo = array("UID"=>"sa","PWD"=>"lxb106170","Database"=>"test"); //配置用戶名,密碼,數據庫
public $sql = "SELECT Name FROM Master..SysDatabases ORDER BY Name"; //默認的sql語句
public $result;
public $conn = '';
public function __construct( $name ='' , $user ='' , $pwd ='' ,$db = '' ){
if( $name ){
$this->serverName = $name;
}
if( $user ){
$this->connection['UID'] = $user;
}
if( $pwd ){
$this->connection['PWD'] = $pwd;
}
if( $db ){
$this->connection['Database'] = $db;
}
//connect to sqlserver
if( !$this->conn ){
$this->conn = sqlsrv_connect( $this->serverName, $this->connectionInfo)
or die( sqlsrv_errors() );
}
}
public function doQuery( $sql ){
if(!$this->conn){
return " sorry ,can't to link server" ;
}
if( $sql ){
$this->sql = $sql ;
}
$this->result = sqlsrv_query($this->conn,$this->sql) ;
return $this->result;
}
public function close(){
if($this->conn){
sqlsrv_close ( $this->conn ) ;
}
}
}
//phpinfo();
$server = new sql();
$sql = "select * from [user] "; //sql語句寫在這
$result = $server->doQuery( $sql ); //查詢返回的句柄
$output = '';
if ( ! is_string( $result )){
while ( $re = sqlsrv_fetch_array ( $result )){ //sqlsrv_fetch_array 通過查詢結果句柄獲取查詢結果
//$output[] = $re; //打印查詢結果
var_dump( $re ) ;
}
}else{
echo $result;
}
?>
替換其中的serverName ,UID ,PWD ,Database
ServerName是sql server的實例名,UID是登錄名,PWD是密碼.運行腳本可以知道是否鏈接成功
已經從sql server數據庫里讀出數據了
二〇一六年十二月二十日星期二
梁小兵
