php5.3.x串連MS SQL server2008

來源:互聯網
上載者:User

開篇

因為畢設老師需求的原因,虛擬旅遊網站要求的資料庫必須使用MS SQL server。

我最擅長的web程式設計語言是PHP,但是在PHP中連結MS SQL server是一件非常麻煩的事,我個人分析造成這種麻煩的原因:是因為使用PHP的一大優點就是免費,然而MS SQL server雖然圖形化介面操作起來簡單,但是其昂貴的授權費讓人望而卻步;加之MySQL不俗的效能和強大的社區支援,使得真正企業環境裡,使用PHP + MS SQL server的人越來越少。

其實縱觀網上的文章,之所以有人選擇這樣的組合(PHP + MS SQL server)是因為系統的遺留問題。比如php程式員要求在某企業網站上進行二次開發,或者企業原來就是用的MS SQL server資料庫。總之,我經過十二小時的奮戰,終於通訊成功,現在把過程和經驗記錄如下。

1. 安裝MS SQL server2008 express資料庫

安裝的過程比較簡單。但是必須記住一點問題,安裝時我們設定的??或者說是我們預設的??資料庫執行個體名。

1.1 資料庫預設的執行個體名

以MS SQL server2008 express為例,一般預設的執行個體名是 SQLEXPRESS。而我自行設定的是SQLSERVER,也就是sql server。

1.2 設定資料庫的登陸方式

我們一定要給sa使用者佈建一個密碼,以便我們將來編寫程式訪問資料庫時的方便。我個人設定的密碼是”6個1“。

2. 登入資料庫

利用管理工具:SQL Server Management Studio,登陸資料庫進行管理。1。

圖1 登陸MS SQL server2008資料庫

2.1登陸時的會遇到的問題

登入時我遇到了問題,2。

圖2 登陸時遇到的問題

錯誤資訊如下:

在與 SQL Server 建立串連時出現與網路相關的或特定於執行個體的錯誤。未找到或無法訪問伺服器。請驗證執行個體名稱是否正確並且 SQL Server 已配置為允許遠端連線。 (provider: 具名管道提供者, error: 40 - 無法開啟到 SQL Server 的串連) (Microsoft SQL Server,錯誤: 53)

2.2 問題的解決方案

在我百度了一些解決方案以後,我瞭解到,伺服器名稱不能填寫預設的:(local)。應該以這樣的格式來填寫:電腦名稱\執行個體名稱。以我個人為例,3。

圖3 正確的登陸填寫

既然能登陸到資料庫,就說明我們的安裝是沒有問題的。下面我們進行一些關於PHP的設定。

3 為PHP準備適當的庫檔案

PHP5.3以後,其串連資料庫的原生代碼是由Microsoft團隊來維護的。我們需要的庫檔案(在windows下是.dll檔案)在PHP的源碼包裡是沒有的,所以我們需要另行下載。

參照PHP官方文檔是最好的選擇。

http://php.net/manual/zh/book.sqlsrv.php

3.1 下載並安裝Microsoft SQL Server 2012 Native Client

說句題外話,這一步是我在寫部落格時,閱讀PHP manual中才得知的。怪不得我第一遍在操作時,碰到了php報錯,中文大意就是“本機沒有安裝Microsoft SQL Server 2012 Native Client”。開來英文好,能閱讀官方文檔是王道啊!

下載Microsoft SQL Server 2012 Native Client的網址如下:

http://php.net/manual/zh/sqlsrv.requirements.php

3.2 下載適當的Microsoft SQL Server Driver for PHP

由官方文檔我們可以得知,對應於PHP5.3.x的適用程式是SQLSRV 3.0。下載網址如下:

http://www.microsoft.com/en-us/download/details.aspx?id=20098

3.3 選擇適當的庫檔案

根據官方文檔,我們把3.2步驟中下載的程式??SQLSRV30.EXE??解壓縮以後,會得到8個驅動檔案(驅動檔案以.dll為結尾)。4。

圖4 SQLSRV30.EXE解壓縮展開之後

根據官方文檔,php5.3安全執行緒版本應選擇 php_pdo_sqlsrv_53_ts.dll 和 php_sqlsrv_53_ts.dll兩個檔案,放置在php根目錄下的ext檔案夾下。例如,在我的機器中,路徑是D:\lamp\php5\ext。

3.4 怎麼樣得知自己的php是否安全執行緒

在phpinfo中,我們查看這樣的一條資訊。5。

圖5 phpinfo輸出資訊

“enable”表示該php是安全執行緒版本的反之就是非安全執行緒。

4. 配置php.ini檔案

關於php.ini檔案的配置,完全可以參照如下的網址。

http://msdn.microsoft.com/en-us/library/cc296203(v=sql.105).aspx

4.1 使php載入SQLSRV驅動

在php.ini的拓展模組載入區??檔案中extension那塊位置,填寫如下配置,使php預設載入SQLSRV 驅動。

         extension=php_sqlsrv_53_ts.dll

4.2 使php載入PDO_SQLSRV驅動

在與4.1中同樣的位置,填寫如下配置。

         extension=php_pdo_sqlsrv_53_ts.dll

為了使php開啟pdo驅動,我們還要開啟pdo驅動。

         extension=php_pdo.dll

4.3驗證pdo_sqlsrv是否載入成功

在phpinfo中看到畫黃線的單詞,表示載入成功。6所示。

圖6 phpinfo的輸出

5. 在php運行時動態載入

我也是現在才知道,php還有這樣的神奇功能,讓我們暫時注釋掉php設定檔裡給你剛剛寫好的配置,試一下動態載入的功能。

根據官方文檔,dl()這個函數在php5.3被廢除了。我因此無法進行測試。

但是微軟官方的php代碼如下:

 dl('php_pdo_sqlsrv_53_ts.dll');

6. 注意事項

在MS SQL server中,資料表能名稱不能叫user,因為有個系統資料表的名稱就是user!

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.