CakePHP 2.2 MSSQL/PDO替代方案?

CakePHP 2.2 MSSQL/PDO替代方案?,php,cakephp,pdo,Php,Cakephp,Pdo,我们有一个CakePHP 1.3应用程序,正在升级到2.2.3。我们的应用程序的一个要求是能够查询到一个单独应用程序的MSSQL数据库,以进行一些身份验证并提取用户数据 在浪费了两天的时间研究和骚扰我们的Web主机来安装PHP/PDO/MSSQL库(我们已经有了用于MySQL、sqlite和sqlite 2的PDO)之后,它看起来相当可怕 TL;DR:我们需要找到一种在Linux下执行PDO MSSQL查询的方法。 开始咆哮: 让我抓狂的事情是:CakePHP开发人员为了使用PDO制作所有DB包

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

在浪费了两天的时间研究和骚扰我们的Web主机来安装PHP/PDO/MSSQL库(我们已经有了用于MySQL、sqlite和sqlite 2的PDO)之后,它看起来相当可怕

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

开始咆哮:

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

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

需要注意的是,PDO/MSSQL在Linux下不起作用,或者应该对随stock CakePHP提供的Sqlserver.php数据源进行修改,以便升级应用程序的人有机会在2.2x下重新运行应用程序

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

诀窍是:

sudo apt-get install php5-sybase
由于某些原因,扩展名不被称为mssql


sybase对我来说运行良好

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

然后可以使用$dbh=newpdo(“odbc:CONNECTIONNAME”,$user,$password);通过PDO连接


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

您是否考虑过自己编写后端,而不是再浪费一周时间来完成上述任何操作?这正是我现在正在做的,我试图调整1.3 Mssql数据源,但效果也不是很好。你是说安装这个php5 sybase组件将允许PHP PDO Mssql吗?是的,它对我很有效。看起来我必须对CakePHP的Sqlserver数据源做一些修改,但这可能会奏效!让我们的网络主机安装php5 sybase,我会报告它是否有效!