2

我们有一个 CakePHP 1.3 应用程序,我们正在升级到 2.2.3。我们的应用程序的要求之一是能够查询到单独应用程序的 MSSQL 数据库以进行一些身份验证并提取用户数据。

在浪费了两天的时间研究和骚扰我们的虚拟主机以安装 PHP / PDO / MSSQL 库(我们已经有用于 MySQL、sqlite 和 sqlite 2 的 PDO)之后,它看起来非常严峻。

TL;DR:我们需要找到一种在 Linux 下进行 PDO MSSQL 查询的方法。

开始咆哮:

让我发疯的事情是:CakePHP 开发人员破坏了 MSSQL 兼容性,以便使用 PDO 制作他们所有的 DB 包装器。如果您在 Linux 服务器上有一个 1.3 的应用程序,该应用程序正在愉快地连接到 MSSQL 数据库并想要将其升级到 2.2,那么您将无法再连接到该数据库,因为显然使用 PDO 比确保您不使用 PDO 更重要破坏用户的现有功能。

CakePHP 2.x 文档不会警告用户这个陷阱,他们只是说你需要 PDO。

应该注意 PDO/MSSQL 不能在 Linux 下工作,或者应该有替代 CakePHP 提供的 Sqlserver.php 数据源,这样升级他们的应用程序的人就有机会在 2.2x 下让他们的应用程序再次运行

我现在真的很生气,因为我浪费了一周的时间将东西从 1.3 移植到 2.2,现在看起来我要么必须手动编写查询并忽略 CakePHP 的出色数据库抽象,要么我需要转换我所有的工作回到 1.3 并放弃最新版本 CakePHP 中的所有新改进。

4

2 回答 2

3

诀窍是:

sudo apt-get install php5-sybase

由于某种原因,扩展名不被称为 mssql

sybase 对我来说很好用

于 2012-11-23T15:53:15.110 回答
0

您需要做的是安装 Microsoft 的 ODBC 驱动程序并设置 odbc 连接字符串。这个过程可能有点棘手,但它确实有效,并且驱动程序很稳定。

然后您可以使用 $dbh = new PDO("odbc:CONNECTIONNAME", $user, $password); 通过 PDO 连接。

排序后,我认为您仍然可以使用 MSSQL 数据源,但需要修改连接字符串。

于 2013-07-17T03:25:22.840 回答