PHP串連MSSQL資料庫案例,PHPWAMP多個PHP版本串連SQL Server資料庫

來源:互聯網
上載者:User

標籤:用法   img   服務   log   線程   驅動程式   sys   water   mssql   



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

 

最近有使用者在使用PHPWAMP的時候,向我諮詢一個問題,就是關於PHP如何串連MSSQL資料庫。

 

平時我們搭建網站通常是PHP+Mysql資料庫,

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

本文案例採用的PHPIntegration Environment是我最新發行的版本PHPWAMP8.1.8.8,不管你用的是其他Integration Environment,還是自己安裝,操作方法都是一樣的,不過我還是建議大家使用我的這款PHPWAMP,我所整合的組件全是完整版,完美無錯省心省力,放在隨身碟隨時使用(支援自訂PHP版本,多版本同時運行)

 

其實早前我就有打算將MSSQL整個資料庫也綠化到PHPIntegration Environment裡面,不用安裝直接使用。

不過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資料庫。那麼我下面有這麼多版本的驅動,應該選哪個呢

(PHP各版本支援MSSQL資料庫的驅動請在百度搜尋這個標題“PHP支援MSSQL資料庫的驅動程式、驅動支援所有PHP版本(最全)”)

 

 

剛才我們開啟的PHP版本是5.3,然後又是安全執行緒,而且phpinfo頁面顯示是VC6

所以要選擇的是php_pdo_sqlsrv_53_ts_vc6.dll和php_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://www.cnblogs.com/phpwamp/p/6282363.html

 

 

 

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

 

 

 

滑鼠拉動捲軸往下看,在這裡點擊查看更加詳細的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版本也是一樣的道理,依樣畫葫蘆即可,如有疑問可以聯絡我。

 

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

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

 

 

PHP各版本支援MSSQL資料庫的驅動請在百度搜尋這個標題“PHP支援MSSQL資料庫的驅動程式、驅動支援所有PHP版本(最全)”

 

 

 

PHP串連MSSQL資料庫案例,PHPWAMP多個PHP版本串連SQL Server資料庫

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.