PHP連接MSSQL數據庫案例,PHPWAMP多個PHP版本連接SQL Server數據庫

 

 

課前小知識普及:MSSQL和SQL Server是同一個軟件,叫法不同而已,MSSQL全稱是Microsoft SQL Server,MSSQL是簡寫,有些人則喜歡直接叫SQL Server,我就比較喜歡這種叫法,有韻味、、、

 

 

 

最近有用戶在使用PHPWAMP的時候,向我諮詢一個問題,就是關於PHP如何連接MSSQL數據庫。

 

平時我們搭建網站通常是PHP+Mysql數據庫

不過在項目中,我們有時候必須要用到PHP+MSSQL數據庫,那應該怎麼辦呢?
 

本文案例採用的PHP集成環境是PHPWAMP8.1.8.8,目前最新版本是PHPWAMP_IN2,不管你用的是其他集成環境,還是自己安裝,操作方法都是一樣的,不過我還是建議大家使用我的這款PHPWAMP,我所集成的組件全是完整版,完美無錯省心省力,放在U盤隨時使用(支持自定義PHP版本,多版本同時運行)

 

其實早前我就有打算將MSSQL整個數據庫也綠化到PHP集成環境裏面,不用安裝直接使用。

不過MSSQL數據庫面對企業是收費的,所以我不敢將其綠化,萬一追究起來,我就懵逼了。

你們可以自己先安裝好數據庫後,按照我的方式去連接就可以了,後面我會詳細演示整個流程。

 

先來演示“本地測試時”常用的搭建方式,然後再演示網站在服務器上正式運營的搭建方式。

其實沒啥區別,主要是演示常規用法以及站點管理裏面的用法,讓各位更加熟練的使用罷了。

 

先來給大家演示php5.3連接MSSQL數據庫的具體做法吧(數據庫是SQL Server 2008)

在PHPWAMP中,點這裏默認啓動的是php5.3,點擊啓動(其他PHP版本請自行切換)

 

啓動後,點擊此處瀏覽網站

 

 

在此頁面的最底部,點擊“點擊此處查看phpinfo文件”,查看更加詳細的環境內容。

 

 

 

來到phpinfo文件頁面,看到這裏的Thread Safety顯示的是enabled

Thread Safety是線程安全的意思,而enabled是啓動的意思,說明目前是線程安全。

 

如果Thread Safety顯示的不是enabled,而是disabled,那麼就是非線程安全。

看圖片很明顯,目前是線程安全,而且是VC6

 

PHP5.3以上的版本,連接MSSQL數據庫不再是mssql.dll擴展,取而代之的是sqlsrv.dll擴展。

因爲要選擇對應的驅動程序,所以要判斷是非線程安全還是線程安全,微軟公司提供了相關驅動,

用於PHP支持MSSQL數據庫。那麼我下面有這麼多版本的驅動,應該選哪個呢

(Lccee提示你:這些驅動的下載地址:http://download.csdn.net/detail/lccee/9732724

 

 

剛纔我們開啓的PHP版本是5.3,然後又是線程安全,而且phpinfo頁面顯示是VC6

所以要選擇的是php_pdo_sqlsrv_53_ts_vc6.dllphp_sqlsrv_53_ts_vc6.dll這兩個。

所以很多用戶說連接失敗,就是因爲你選擇的驅動版本有問題,要對號入座才行。

 

 

 

打開PHPWAMP版本文件所在目錄。

 

 

 

來到對應的ext目錄,把php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll複製進去

這兩個驅動文件一個是以pdo的方式連接,另一個則是sqlsrv_connect的方式連接。

 

複製進去後如下圖所示。

 

 

 

好,接着下一步,打開對應版本的PHP配置文件

 

 

 

在打開的php.ini文件中

extension=php_sqlsrv_53_ts_vc6.dll

extension=php_pdo_sqlsrv_53_ts_vc6.dll

加入上面這兩行,然後搜索“mssql.secure_connection”這一段內容,

將“mssql.secure_connection = Off”改爲“mssql.secure_connection = On”

 

 

修改完成後,雙擊此處重啓當前apache服務器即可。

 

 

重啓後,在phpinfo頁面如果能搜到sqlsrv,說明已經成功配置好了,如圖所示。

 

 

 

接下來我們來連接一下數據庫,看是否正常!

在測試數據庫之前,我們先來查看一下數據庫端口號是多少,右鍵“新建查詢”

 

 

輸入exec sys.sp_readerrorlog 0, 1, 'listening' 然後右鍵點擊執行。

 

發現端口號是默認的1433,這樣我們在連接數據庫的時候就不需要指定端口號了,

因爲是默認端口,所有我們可以在PHP頁面可以這麼寫。代碼隨便打打,證明能連接上就行了。

 

<?php

 try {
   $dbName = "sqlsrv:Server=127.0.0.1;Database=lccee";   //這裏是服務器IP地址和數據庫名,端口不是默認的話記得改一下
   $dbUser = "sa";    //用戶名
   $dbPassword = "111111";    //登陸密碼

   $db = new PDO($dbName, $dbUser, $dbPassword);   
    
   if ($db)   
  {       
     echo "恭喜你!數據庫連接成功了!!<br />";   
   }


     }
        catch (Exception $e){ echo "數據庫連接失敗!!";   }

?>

 

 

 

 

 

 

如果不是默認端口,假設是1688端口,那麼上面這一行就應該改爲。

$dbName = "sqlsrv:Server=127.0.0.1,1688;Database=lccee";

當然,就算是默認端口,你也可以加上默認端口號,也是沒錯的,如下代碼所示。

$dbName = "sqlsrv:Server=127.0.0.1,1433;Database=lccee";

易錯點:這裏的ip+端口,不是冒號!而是逗號,如果寫成“127.0.0.1:1433”是錯誤的!

 

 

好,我們打開此頁面看看效果,運行代碼提示連接成功,說明沒問題。

 

 

假設我把連接裏面的數據庫密碼改一下,再看,就提示失敗了,如下圖。

 

 

 

 

前面我們不是在php配置里加入了兩個DLL嗎,分別是

php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll

這兩個驅動文件一個是以pdo的方式連接,另一個則是sqlsrv_connect的方式連接。

 

 

而上面我們演示的連接方式是pdo,現在我們來用sqlsrv_connect的方式連接。

那麼代碼可以這麼寫,創建一個sqlsrv_connect.php文件,裏面寫上如下代碼

<?php

$serverName = "NEPTUNE-PC"; //serverName\instanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "連接成功<br />";
}else{
     echo "連接失敗<br />";
     
}

?>

 

然後再測試看,也是連接成功了!

 

 

假如我把正確的密碼111111改成了錯誤的密碼888888,

(具體的數據庫密碼,看你自己的MSSQL數據庫,我的密碼是111111

 

那麼就顯示連接錯誤了,把正確密碼改成錯誤以後,就顯示連接失敗了。

 

 

 

下面我們再改一下代碼,讀取數據庫表裏的內容,這是我創建的數據庫,

數據庫名爲Lccee,在這個數據庫裏面有個表叫phpwamp。

 

 

 

然後我隨便添加幾行代碼,用來讀出數據表裏面的內容。

<?php

$serverName = "NEPTUNE-PC"; //serverName\instanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "連接成功<br />";
}else{
     echo "連接失敗<br />";
     
}

$query ="select * from phpwamp";
$result = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($result)){
 
       print_r($row);
       echo "<br>";
}

?>

 

 

然後保存,這時候我們再來看看,運行後就讀出這個數據表裏的內容了。

 

 

 

 

最後我們再演示一下,在服務器上用站點管理創建的站點如何連接MSSQL數據庫。

 

開始我們的教程,第一步先把主界面修改成80端口,如下圖所示。

 

 

 

修改端口後切換到任意處在apache2.4之下的PHP版本,php5.5、php5.6、php7都可以。

 

 

 

然後打開apache2.4站點管理,如下圖所示。

 

 

建立站點,如圖所示(Apache2.4站點管理可建立無數站點,每個站點可指定不同的PHP版本,也可以自定義設置PHP版本,還可以多個不同PHP版本同時運行,右鍵功能豐富)如圖下所示,我選的是php5.4這個版本,填寫完畢後點擊“添加站點”

 

 

添加後左側站點列表裏就會出現了添加的站點,右鍵站點選擇“生成此站hosts內容”

 

 

然後點擊此處的按鈕去運行站點,如下圖紅色箭頭所示。

 

右鍵站點,選擇“域名瀏覽該網站”,就可以用域名瀏覽(在服務器上再進行域名解析就可以了)

如果不懂如何解析,可以看看我這篇文章:http://blog.csdn.net/lccee/article/details/53945196

 

 

 

點擊“域名瀏覽該網站”後,我們就可以看到這個頁面,如下圖所示。

 

 

 

鼠標拉動滾動條往下看,在這裏點擊查看更加詳細的phpinfo()信息。

 

 

 

可以看到在phpinfo文件頁面,這裏的Thread Safety顯示的是enabled

Thread Safety是線程安全,而enabled是啓動,那麼說明目前是線程安全

 

 

目前的PHP版本是php5.4,所以我們應該選擇的兩個DLL文件是

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_nts.dll,如下圖

 

 

 

和前面一樣把這兩個DLL複製到對應PHP版本的ext文件夾裏面。

 

 

這時候我們回到站點管理界面,右鍵站點打開與之對應的php.ini配文件。

 

 

在打開的php.ini文件中

extension=php_sqlsrv_54_ts.dll

extension=php_pdo_sqlsrv_54_ts.dll

加入上面這兩行,然後搜索“mssql.secure_connection”這一段。

把“mssql.secure_connection = Off”改爲“mssql.secure_connection = On

 

 

 

修改後保存,再次重啓Apache服務,創建一個sqlsrv_connect.php文件,裏面寫上如下代碼

<?php


$serverName = "NEPTUNE-PC"; //serverName\instanceName
$connectionInfo = array( "Database"=>"lccee", "UID"=>"sa", "PWD"=>"111111");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
 
if( $conn ) {
     echo "連接成功<br />";
}else{
     echo "連接失敗<br />";
     
}

$query ="select * from phpwamp";
$result = sqlsrv_query($conn, $query);
while($row = sqlsrv_fetch_array($result)){
 
       print_r($row);
       echo "<br>";
}

?>

 

 

然後瀏覽sqlsrv_connect.php文件,就能讀出數據庫裏面的信息了,如下圖

 

 

其他PHP版本也是一樣的道理,依樣畫葫蘆即可,相關DLL在這文章的附件裏面下載即可。

最新版PHPWAMP集成的php5.2、php5.3、php5.4、php5.5、php5.6、php7都已安裝了MSSQL數據庫擴展

友情提示:如在phpinfo頁面能搜到sqlsrv,但還是連不上數據庫,可以在下面鏈接下載ODBC驅動程序安裝。

 

 

ODBC驅動程序下載地址:http://download.csdn.net/download/lccee/9971114
PHP各版本支持MSSQL數據庫驅動下載地址:http://download.csdn.net/detail/lccee/9732724

 

 

 

以後如果時間允許,我也會考慮製作一個Linux下的PHPWAMP,應網友的要求,Mac系統的也在考慮,不過對Mac系統不是特別瞭解,需要一定時間研究研究,最近工作也挺忙的,一個人時間有限,估計進度會很慢。

後期我會在PHPWAMP版本里配置好各版本PHP與MSSQL的連接,到時你們就不用自己配置了

 

 

相關文章推薦:

自定義設置任意PHP版本教程:http://blog.csdn.net/lccee/article/details/53945468

PHPWAMP在雲服務器上的應用:http://blog.csdn.net/lccee/article/details/53945196

網頁加密與網頁亂碼最詳細的分析:http://edu.csdn.net/course/detail/2613

虛擬主機搭建網站的全程視頻案例:http://edu.csdn.net/course/detail/1846

強制修改所有mysql數據庫密碼:http://blog.csdn.net/lccee/article/details/53955094

強制去除域名端口號(獨家功能):http://blog.csdn.net/lccee/article/details/53992304

 

 

發佈了50 篇原創文章 · 獲贊 118 · 訪問量 1556萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章