2012-11-23 76 views
2

我們有一個CakePHP 1.3應用程序,我們正在升級到2.2.3。我們的應用程序的要求之一是能夠查詢到一個單獨的應用程序的MSSQL數據庫進行一些身份驗證和拉出用戶數據。CakePHP 2.2 MSSQL/PDO的替代品?

經過兩天浪費時間研究和騷擾我們的webhost以安裝PHP/PDO/MSSQL庫(我們已經擁有PDO for MySQL,sqlite和sqlite 2),它看起來似乎非常嚴酷。

TL; DR:我們需要找到一種方法做Linux下PDO MSSQL查詢。

開始咆哮:

是駕駛我瘋狂的事情是這樣的:CakePHP的開發者打破了使他們的所有DB包裝與PDO的緣故MSSQL兼容性。如果您的Linux服務器上有一個1.3應用程序,它很高興地連接到MSSQL數據庫,並且希望將其升級到2.2,那麼您將不能再連接到該數據庫,因爲顯然使用PDO比確保您不需要破壞用戶的現有功能。

CakePHP的2.x的文檔不警告這個陷阱的用戶,他們所要說的是,你需要PDO。

應該有一個通知,PDO/MSSQL不會在Linux下工作,或應該有一個alterantive來,是如此,人們在升級自己的應用程序提供股票的CakePHP的Sqlserver.php數據源有一個獲得機會的應用程序功能下再次2.2x

我真的爲這個權利現在蒸了,因爲我浪費了一個星期的時間移植從1.3到2.2的東西,現在看起來我要麼手動編寫查詢和忽略CakePHP的偉大數據庫抽象,或者我需要將我所有的工作返回到1.3,並放棄CakePHP最新版本中的所有新改進。

+0

而不是浪費一個星期做任何上述情況,你有沒有考慮寫後端自己嗎? – vanneto

+0

這正是我現在正在做的事情,我試圖修改1.3 Mssql數據源,但那也不能很好地工作。 – DirtyBirdNJ

回答

3

的訣竅是:

sudo apt-get install php5-sybase 

對於一些擴展的原因是不是叫MSSQL

SYBASE爲我工作得很好

+0

你是說安裝這個php5-sybase組件將允許PHP PDO MSSQL? – DirtyBirdNJ

+0

是的,它確實爲我工作。 http://grover.open2space.com/content/use-php-and-pdo-connect-ms-sql-server –

+0

它看起來像我將不得不做一些修改CakePHP的sqlserver的數據源,但是這可能只是工作!讓我們的網絡主機安裝php5-sybase,我會報告它是否有效! – DirtyBirdNJ

0

你需要做的是從Microsoft安裝和設置ODBC驅動程序是什麼up odbc連接字符串。該過程可能有點棘手,但它確實有效,並且驅動程序是穩定的。

然後,您可以用$胸徑=新PDO( 「ODBC:connectionName中」,$用戶,$密碼);通過PDO進行連接。

一旦進行排序,我覺得你還是可以使用MSSQL數據源,但修改的連接字符串。