2014年12月28日 星期日

php 使用 PDO 連線 mssql

突然在 PTT Soft_Job 看到以前順手寫下的文章,乾脆 2014 最後日子許久沒寫東西的 blog 來衝衝文章數目,記錄一下

文章代碼(AID): #1HPvWVZh (Soft_Job)
作者  EJB (LexChien)
標題  Re: [請益] PHP 連結 SQL SERVER

版本 5.3.19
框架 PHP CI
DB   MSSQL 2005
OS   win x86 or localhost win7 64bit(註二)
連線 PDO


如果要連線MS SLQ 須先開啟 php.ini 的 sqlsrv 擴張模組(註一)

以及要檢查你採用的 framework 中的 DB driver 是否有支援相對應的DB

以 PHP CI 為例

有支援 Oracle MSSQL sqlite odbe pdo 等 DB 和連線方式

然後再檢查 connect function 需要擴張開啟

以 CI MSSQL 為例,在 db_driver 是用

return @mssql_query($sql, $this->conn_id);

所以在 php.ini 中的相對應的 mssql function 要擴張開啟 (預設是沒有開啟)

連線方式測試很久後直接用 PDO 一次連線就上....(撒花

MSSQL 和 MySQL 呼叫上沒有太大的差異,只有注意時間的使用方法

就目前我遇到的專案,臨時 PM 開完會,通知要更換 DB 的時候

function 還沒有遇過太大的問題,主要都是欄位資料再倒來倒去的時候

會因為 mysql 有的類型 MSSQL 沒有 就會轉變為 預設 int 類型

導致 INSERT 時後無法寫資料

Oracle 我目前還沒遇過相關專案,所以無法給你建議

因為連線這詭異問題,問了網路上不少大神,似乎也是無解

得不到答案,大部分的都還是 php + mysql 居多

但因為中大型企業不少還是會採用 MSSQL or Oracle

這些玩具多玩玩,當作經驗有益無害....(茶

註一
網路上蠻多教學文章,試著做過後發現這個模組在我本機一直開不起來
最後發現似乎是因為我的 localhost 是64位元關係
後來跟 MIS 要了一個 server 環境,這個模組才開的啟
以及看一下 PDO 連線規則中 sqlsrv 是否有支援
沒有支援怎麼連線就是不聽你話,我不知道是不是我的機器關係.....(攤手

註二
我在本機開發的時候常常會遇到 64bit 有些模組開不起的詭異現象
推估應該是懶人包的 driver 的關係
目前我是採用 wamp server
之前也用過 xampp 或者 appserv 手動土砲
好像在 64bit 環境總會出現很多詭異的現象,甚至也出現過 curl 開不起
總而言之換個電腦試看看

結論: 這篇不是要討論我的 PTT ID,為什麼下面大家都開始討論我的 ID
Share:

0 意見: