Microsoft PHP SQL驱动程序与PHP SQL驱动程序

问题描述:

所以在我的测试机器上,我安装了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

您需要映射(其他城市)所有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

这两个驱动程序没有任何共同之处(除了允许与SQL Server交互)。他们有不同的功能名称和功能。您的程序需要PHP SQL驱动程序,并且不会与Microsoft一起运行,除非您完全重写它。

(不管结果如何,微软库是相当不错的。)