2

I'm building an API in Zend. The development environment is in MySQL and will likely deploy to an environment that uses MS SQL. I've not used PDO before and I'm still wrapping my head around its implementation. Here's what I have in one of my actions. (I'll clean it up and put it in a proper model when I get this figured out.)

$params=array('host' =>'localhost',
  'username'         => '****',
  'password'         => '****',
  'dbname'           => '****');
$db = new Zend_Db_Adapter_Pdo_Mysql($params);
$db->setFetchMode(Zend_Db::FETCH_OBJ);
$sql = 'Select * from test';
$this->response->data = $db->fetchAssoc($sql);

This gives me the information I want. Am I correct in believing that I can switch out what adapter I'm using when ready to deploy without changing my SQL statement and everything "should" work the same?

I know there's more sophisticated abstraction methods, but seeing how new I am to Zend, I'd like to keep it simple for now.

1 Answer 1

4

You have the right idea:

The Zend_Db adapters create a bridge from the vendor-specific PHP extensions to a common interface to help you write PHP applications once and deploy with multiple brands of RDBMS with very little effort.

Reference

As long as you are not doing anything MySQL-specific, you will be able to switch adapters as needed.

Sign up to request clarification or add additional context in comments.

4 Comments

Is there a SQL standard that is shared between MySQL and MS SQL?
Thanks, I'm still pretty new to Zend. I'm more familiar with Kohana and a few CMSes, but I wanted to use something more industry standard for this. I can see why it's so popular.
@hakre: There are areas of commonality, as well as areas of difference. Zend_Db_Adapter tries to present a unified interface to developers so they don't have to learn the intricacies of both. Perry, I glad I could help, and hope it works out for you. Enjoy!
Presumably by using Zend_Db_Table as well you wouldn't need an 'SQL standard'? framework.zend.com/manual/en/zend.db.table.html

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.