微软PHP SQL驱动程序与PHP SQL驱动程序

3
在我的测试机上,我已经安装了带有Apache的PHP,并且我使用了PHP SQL Driver(不是Microsoft的)。因此,我使用mssql_connect()和其他相关命令来处理数据库。
当我切换到另一台服务器时,它有Microsoft PHP SQL Driver。现在,每当我执行mssql_connect()和其他mssql_ php命令时,它就会崩溃并显示PHP_via_FastCGI错误。
请问如何解决这个问题?我需要改变我的代码吗?如果是这样,我有数百个文件,我需要在每个文件中进行更改吗?
谢谢。

这就是为什么你必须始终使用数据库抽象库的原因。 - shamittomar
@shamittomar,数据库抽象库解决了许多问题,但不包括这个特定的问题:无论你选择哪个库,你仍然需要安装它。 - Álvaro González
@Álvaro G. Vicario,但如果有一个抽象层,你只需要在抽象层中添加对Microsoft驱动程序的支持。没有抽象层,OP将需要触及与数据库相关的每一段代码,无论是将调用转换为Microsoft格式还是实现一个抽象层。 - KM.
2个回答

1

您需要将应用程序中的所有数据库调用映射(更改)为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的值,代码可以轻松地在使用一个驱动程序或另一个驱动程序之间切换。


PDO是一个相当不错的数据库抽象层,它与PHP一起提供。对于johnshaddad来说,建立他的mssql转换层可能是一个不错的主意,以便以后需要再次切换到不同的数据库驱动程序。 - James
请注意,SQL Server的PDO驱动程序被标记为实验性,实际上已从最新的PHP版本中删除。基于PDO的重写必须使用ODBC或Microsoft驱动程序。 - Álvaro González

1

这两个驱动程序除了允许与SQL Server交互之外,没有任何共同点。它们具有不同的函数名称和功能。您的程序需要PHP SQL驱动程序,如果不完全重写它,将无法使用Microsoft驱动程序。

(不管怎样,微软库还是相当不错的。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接