2010-09-03 116 views
3

所以在我的測試機器上,我安裝了Apache的PHP,並且我有PHP SQL Driver(不是Microsoft的)。所以,我使用mssql_connect()和這些命令來處理數據庫。Microsoft PHP SQL驅動程序與PHP SQL驅動程序

當我轉移到另一臺服務器時,它有Microsoft PHP SQL Driver。現在它崩潰並向我顯示錯誤PHP_via_FastCGI錯誤,只要我執行mssql_connect()和其他mssql_ php命令。

您能否就如何解決這個問題提出建議?我是否需要將我的代碼更改爲其他內容?如果是這樣的話,我有數百個文件,我需要在每個文件中進行更改嗎?

謝謝。

+0

這就是爲什麼你必須**總是使用數據庫抽象庫**。 – shamittomar 2010-09-03 17:43:14

+0

@shamittomar,數據庫抽象庫解決了許多問題,但不是這個特定的問題:無論你選擇什麼樣的庫,你仍然需要安裝它。 – 2010-09-03 19:44:47

+0

@ÁlvaroG. Vicario,但是如果有一個抽象層,您只需要在Microsoft驅動程序的抽象層中添加支持。在沒有抽象層的情況下,OP將需要觸及處理數據庫的每段代碼,或者將調用轉換爲Microsoft格式,或者通過實現抽象層。 – 2010-09-03 20:48:41

回答

1

您需要映射(其他城市)所有DB的應用程序Microsoft驅動程序的當量函數的調用或創建一個抽象層。一個抽象層是你彌補自己的數據庫功能,如:myConnect(...) myEXEC(...)

和內你有一個像

if ($givenDriver=='M') { 
    code using microsoft DB function 
} elseif ($givenDriver=='P') { 
    code using the PHP DB function 
} else { 
    error unknown connection type 
} 

然後到處都在你的代碼的代碼從實際PHP驅動程序命令你的抽象化轉換層命令。然後,通過更改$givenDriver的值,代碼可以輕鬆地在使用一個驅動程序或另一個驅動程序之間進行切換。

+0

PDO是一個相當不錯的數據庫抽象層,它帶有PHP。對於johnshaddad來說,建立他的mssql轉換層可能是一個好主意,以防萬一他需要再次切換到不同的數據庫驅動程序。 – James 2010-09-03 21:01:49

+0

請注意,SQL Server的PDO驅動程序標記爲** experimental **,實際上已從最新的PHP版本中刪除。基於PDO的重寫必須使用ODBC或Microsoft驅動程序。 – 2010-09-05 10:26:37

1

這兩個驅動程序沒有任何共同之處(除了允許與SQL Server交互)。他們有不同的功能名稱和功能。您的程序需要PHP SQL驅動程序,並且不會與Microsoft一起運行,除非您完全重寫它。

(不管結果如何,微軟庫是相當不錯的。)

相關問題