DirtyBirdNJ
DirtyBirdNJ

Reputation: 592

CakePHP 2.2 MSSQL / PDO Alternatives?

We have a CakePHP 1.3 application that we're in the process of upgrading to 2.2.3. One of the requirements of our app is to be able to query into an MSSQL database of a separate application to do some authentication and to pull user data out.

After two wasted days of researching and harassing our webhost to install the PHP / PDO / MSSQL lib (we already have PDO for MySQL, sqlite and sqlite 2) it's staring to seem pretty grim.

TL;DR: We need to find a way to do PDO MSSQL queries under Linux.

Begin Rant:

The thing that's driving me crazy is this: The CakePHP devs BROKE MSSQL compatibility for the sake of making all their DB wrappers with PDO. If you had a 1.3 app on a Linux server that was happily connecting to MSSQL databases and want to upgrade it to 2.2, you will no longer be able to connect to that database because apparently using PDO is more important than ensuring that you don't destroy existing functionality for your users.

CakePHP 2.x Docs do NOT warn users of this pitfall, all they say is that you need PDO.

There should be a notice that PDO/MSSQL does not work under Linux, or there should be an alterantive to the Sqlserver.php datasource that's provided with stock CakePHP so that people upgrading their apps have a chance of getting their applications functional again under 2.2x

I am really steamed about this right now because I wasted a week of time porting things over from 1.3 to 2.2 and now it looks like I either have to manually write the queries and ignore CakePHP's great database abstraction, or I need to convert all my work BACK to 1.3 and give up all the new improvements in the latest version of CakePHP.

Upvotes: 2

Views: 1623

Answers (2)

stabbie
stabbie

Reputation: 375

What you need to do is install the ODBC drivers from Microsoft and set up the odbc connection strings. The process can be a bit tricky but it does work, and the driver is stable.

You can then use $dbh = new PDO("odbc:CONNECTIONNAME", $user, $password); to connect through PDO.

Once that is sorted, I think you can still use the MSSQL data source but modifying the connection string.

Upvotes: 0

E_p
E_p

Reputation: 3144

The trick is :

sudo apt-get install php5-sybase

For some reason extension is not called mssql

sybase worked fine for me

Upvotes: 3

Related Questions