【问题标题】:Microsoft PHP SQL Driver vs PHP SQL DriverMicrosoft PHP SQL 驱动程序与 PHP SQL 驱动程序
【发布时间】:2010-09-03 17:35:56
【问题描述】:

所以在我的测试机器上,我安装了带有 Apache 的 PHP,并且我有 PHP SQL 驱动程序(不是 Microsoft 驱动程序)。于是,我就用 mssql_connect() 之类的命令来处理数据库了。

当我转移到另一台服务器时,它有 Microsoft PHP SQL 驱动程序。现在,每当我执行 mssql_connect() 和其他 mssql_ php 命令时,它就会崩溃并显示 PHP_via_FastCGI 错误。

您能告诉我如何解决这个问题吗?我需要将我的代码更改为其他内容吗?如果是这种情况,我有数百个文件,我需要在每个文件中进行更改吗?

谢谢。

【问题讨论】:

  • 这就是为什么您必须始终使用数据库抽象库
  • @shamittomar,数据库抽象库解决了许多问题,但不是这个特定的问题:无论您选择什么库,您仍然需要安装它。
  • @Álvaro G. Vicario,但如果有抽象层,您只需要在抽象层中添加对 Microsoft 驱动程序的支持。如果没有抽象层,OP 将需要接触处理数据库的每一段代码,要么将调用转换为 Microsoft 格式,要么实现抽象层。

标签: php sql-server


【解决方案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 的值轻松地在使用一个驱动程序或另一个驱动程序之间切换。

【讨论】:

  • PDO 是一个相当不错的数据库抽象层,它是 PHP 自带的。 johnshaddad 在此基础上构建他的 mssql 转换层可能是个好主意,以防万一他需要再次切换到不同的数据库驱动程序。
  • 请注意,SQL Server 的 PDO 驱动程序被标记为 experimental 并且实际上已从最新的 PHP 版本中删除。基于 PDO 的重写必须使用 ODBC 或 Microsoft 驱动程序。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-09-24
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2018-12-29
    • 1970-01-01
    相关资源
    最近更新 更多