溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》
  • 首頁 > 
  • 教程 > 
  • 數(shù)據(jù)庫 > 
  • PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫

發(fā)布時(shí)間:2020-06-20 07:39:42 來源:網(wǎng)絡(luò) 閱讀:44003 作者:Lccee老師 欄目:數(shù)據(jù)庫


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


最近有用戶在使用PHPWAMP的時(shí)候,向我咨詢一個(gè)問題,就是關(guān)于PHP如何連接MSSQL數(shù)據(jù)庫。


平時(shí)我們搭建網(wǎng)站通常是PHP+Mysql數(shù)據(jù)庫,

不過在項(xiàng)目中,我們有時(shí)候必須要用到PHP+MSSQL數(shù)據(jù)庫,那應(yīng)該怎么辦呢?

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


其實(shí)早前我就有打算將MSSQL整個(gè)數(shù)據(jù)庫也綠化到PHP集成環(huán)境里面,不用安裝直接使用。

不過MSSQL數(shù)據(jù)庫面對(duì)企業(yè)是收費(fèi)的,所以我不敢將其綠化,萬一追究起來,我就懵逼了。

你們可以自己先安裝好數(shù)據(jù)庫后,按照我的方式去連接就可以了,后面我會(huì)詳細(xì)演示整個(gè)流程。


先來演示“本地測(cè)試時(shí)”常用的搭建方式,然后再演示網(wǎng)站在服務(wù)器上正式運(yùn)營的搭建方式。

其實(shí)沒啥區(qū)別,主要是演示常規(guī)用法以及站點(diǎn)管理里面的用法,讓各位更加熟練的使用罷了。


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

在PHPWAMP中,點(diǎn)這里默認(rèn)啟動(dòng)的是php5.3,點(diǎn)擊啟動(dòng)(其他PHP版本請(qǐng)自行切換)

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


啟動(dòng)后,點(diǎn)擊此處瀏覽網(wǎng)站

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



在此頁面的最底部,點(diǎn)擊“點(diǎn)擊此處查看phpinfo文件”,查看更加詳細(xì)的環(huán)境內(nèi)容。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




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

Thread Safety是線程安全的意思,而enabled是啟動(dòng)的意思,說明目前是線程安全。


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

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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


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

因?yàn)橐x擇對(duì)應(yīng)的驅(qū)動(dòng)程序,所以要判斷是非線程安全還是線程安全,微軟公司提供了相關(guān)驅(qū)動(dòng),

用于PHP支持MSSQL數(shù)據(jù)庫。那么我下面有這么多版本的驅(qū)動(dòng),應(yīng)該選哪個(gè)呢

(Lccee提示你:這些驅(qū)動(dòng)在這篇文章的附件里面下載,包含了php所有版本的驅(qū)動(dòng))

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



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

所以要選擇的是php_pdo_sqlsrv_53_ts_vc6.dllphp_sqlsrv_53_ts_vc6.dll這兩個(gè)。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫

所以很多用戶說連接失敗,就是因?yàn)槟氵x擇的驅(qū)動(dòng)版本有問題,要對(duì)號(hào)入座才行。




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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




來到對(duì)應(yīng)的ext目錄,把php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll復(fù)制進(jìn)去

這兩個(gè)驅(qū)動(dòng)文件一個(gè)是以pdo的方式連接,另一個(gè)則是sqlsrv_connect的方式連接。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


復(fù)制進(jìn)去后如下圖所示。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




好,接著下一步,打開對(duì)應(yīng)版本的PHP配置文件

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




在打開的php.ini文件中

extension=php_sqlsrv_53_ts_vc6.dll

extension=php_pdo_sqlsrv_53_ts_vc6.dll

加入上面這兩行,然后搜索“mssql.secure_connection”這一段內(nèi)容,

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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



修改完成后,雙擊此處重啟當(dāng)前apache服務(wù)器即可。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



重啟后,在phpinfo頁面如果能搜到sqlsrv,說明已經(jīng)成功配置好了,如圖所示。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




接下來我們來連接一下數(shù)據(jù)庫,看是否正常!

在測(cè)試數(shù)據(jù)庫之前,我們先來查看一下數(shù)據(jù)庫端口號(hào)是多少,右鍵“新建查詢”

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



輸入exec sys.sp_readerrorlog 0, 1, 'listening' 然后右鍵點(diǎn)擊執(zhí)行。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


發(fā)現(xiàn)端口號(hào)是默認(rèn)的1433,這樣我們?cè)谶B接數(shù)據(jù)庫的時(shí)候就不需要指定端口號(hào)了,

因?yàn)槭悄J(rèn)端口,所有我們可以在PHP頁面可以這么寫。代碼隨便打打,證明能連接上就行了。

<?php

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

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


     }
        catch (Exception $e){ echo "數(shù)據(jù)庫連接失?。。?quot;;   }

?>


如果不是默認(rèn)端口,假設(shè)是1688端口,那么上面這一行就應(yīng)該改為。

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

當(dāng)然,就算是默認(rèn)端口,你也可以加上默認(rèn)端口號(hào),也是沒錯(cuò)的,如下代碼所示。

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

易錯(cuò)點(diǎn):這里的ip+端口,不是冒號(hào)!而是逗號(hào),如果寫成“127.0.0.1:1433”是錯(cuò)誤的!



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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



假設(shè)我把連接里面的數(shù)據(jù)庫密碼改一下,再看,就提示失敗了,如下圖。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫





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

php_pdo_sqlsrv_53_ts_vc6.dll和php_sqlsrv_53_ts_vc6.dll

這兩個(gè)驅(qū)動(dòng)文件一個(gè)是以pdo的方式連接,另一個(gè)則是sqlsrv_connect的方式連接。



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

那么代碼可以這么寫,創(chuàng)建一個(gè)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 />";
     
}

?>


用sqlsrv_connect的方式連接,如果端口不是默認(rèn)的1433,

那么這里$serverName 就寫成$serverName = "127.0.0.1,1434"; 




然后再測(cè)試看,也是連接成功了!

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



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

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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


那么就顯示連接錯(cuò)誤了,把正確密碼改成錯(cuò)誤以后,就顯示連接失敗了。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




下面我們?cè)俑囊幌麓a,讀取數(shù)據(jù)庫表里的內(nèi)容,這是我創(chuàng)建的數(shù)據(jù)庫,

數(shù)據(jù)庫名為L(zhǎng)ccee,在這個(gè)數(shù)據(jù)庫里面有個(gè)表叫phpwamp。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




然后我隨便添加幾行代碼,用來讀出數(shù)據(jù)表里面的內(nèi)容。

<?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>";
}

?>



然后保存,這時(shí)候我們?cè)賮砜纯?,運(yùn)行后就讀出這個(gè)數(shù)據(jù)表里的內(nèi)容了。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫






最后我們?cè)傺菔疽幌拢诜?wù)器上用站點(diǎn)管理創(chuàng)建的站點(diǎn)如何連接MSSQL數(shù)據(jù)庫。


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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




然后打開apache2.4站點(diǎn)管理,如下圖所示。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



添加后左側(cè)站點(diǎn)列表里就會(huì)出現(xiàn)了添加的站點(diǎn),右鍵站點(diǎn)選擇“生成此站hosts內(nèi)容”

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



然后點(diǎn)擊此處的按鈕去運(yùn)行站點(diǎn),如下圖紅色箭頭所示。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


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

如果不懂如何解析,可以看看我這篇文章:http://lccee.blog.51cto.com/10514884/1887604

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




點(diǎn)擊“域名瀏覽該網(wǎng)站”后,我們就可以看到這個(gè)頁面,如下圖所示。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




鼠標(biāo)拉動(dòng)滾動(dòng)條往下看,在這里點(diǎn)擊查看更加詳細(xì)的phpinfo()信息。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




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

Thread Safety是線程安全,而enabled是啟動(dòng),那么說明目前是線程安全。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



目前的PHP版本是php5.4,所以我們應(yīng)該選擇的兩個(gè)DLL文件是

php_pdo_sqlsrv_54_ts.dll 和 php_sqlsrv_54_ts.dll,如下圖

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




和前面一樣把這兩個(gè)DLL復(fù)制到對(duì)應(yīng)PHP版本的ext文件夾里面。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



這時(shí)候我們回到站點(diǎn)管理界面,右鍵站點(diǎn)打開與之對(duì)應(yīng)的php.ini配文件。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



在打開的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

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫




修改后保存,再次重啟Apache服務(wù),創(chuàng)建一個(gè)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文件,就能讀出數(shù)據(jù)庫里面的信息了,如下圖

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫


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

最新版PHPWAMP集成的php5.2、php5.3、php5.4、php5.5、php5.6、php7都已安裝MSSQL數(shù)據(jù)庫擴(kuò)展。

phpinfo頁面能搜到sqlsrv,但還是連不上數(shù)據(jù)庫,可在附件下載ODBC驅(qū)動(dòng)程序安裝。



以后如果時(shí)間允許,我也會(huì)考慮制作一個(gè)Linux下的PHPWAMP,應(yīng)網(wǎng)友的要求,Mac系統(tǒng)的也在考慮,不過對(duì)Mac系統(tǒng)不是特別了解,需要一定時(shí)間研究研究,最近工作也挺忙的,一個(gè)人時(shí)間有限,估計(jì)進(jìn)度會(huì)很慢。

后期我會(huì)在PHPWAMP版本里配置好各版本PHP與MSSQL的連接,到時(shí)你們就不用自己配置了



運(yùn)行環(huán)境上遇到任何問題都可以來我博客提問:http://lccee.blog.51cto.com/10514884/d-1


最后提示:文章中提到的DLL就在文章底部的“附件下載”那里,包含了所有PHP版本所需驅(qū)動(dòng)。



Lccee老師視頻教程edu.51cto.com/lecturer/10514884.html

其他的PHPWAMP應(yīng)用文章可點(diǎn)此查看:https://blog.51cto.com/lccee


歡迎大家關(guān)注我的博客獲取最新資訊,如果您有什么建議可以私信我。

PHP連接MSSQL數(shù)據(jù)庫案例,PHPWAMP多個(gè)PHP版本連接SQL Server數(shù)據(jù)庫



附件:http://down.51cto.com/data/2366396
向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI