开发者

Zend_Db without Zend Framework [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.

We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.

Closed 7 years ago.

开发者_C百科 Improve this question

I want using Zend_Db without Zend_Framework. I want incorporate Zend_Db for my existing website that was not made using Zend Framework. Is it possible to use Zend_Db like this? Can you recommend good tutorial or example how to do it good?


To some extent, this depends upon the web framework you are using. But, in general, the Zend_Db documentation is pretty clear in this regard.

Create an adapter instance in your bootstrap. As an example:

$db = Zend_Db::factory('Pdo_Mysql', array(
    'host'     => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxxxx',
    'dbname'   => 'test'
));

If you plan to use Zend_Db_Table, then you can make this the default adapter:

Zend_Db_Table::setDefaultAdapter($db);

In any case, it's helpful to have this adapter saved someplace where you can access it. For example:

Zend_Registry::set('db', $db);

Then in your downstream code, use this adapter to create queries for select(), insert(), update(), delete(), etc:

$db = Zend_Registry::get('db');
$select = $db->select()
    ->from('posts')
    ->where('cat_id = ?', $catId)
    ->order('date_posted DESC')
    ->limit(5);
$rows = $db->fetchAll($select);

Hope this helps. Cheers!


For Zend Framework 2.*, creating the adapter would be:

$db = new \Zend\Db\Adapter\Adapter([
    'driver' => 'Pdo_Mysql',
    'host' => '127.0.0.1',
    'username' => 'webuser',
    'password' => 'xxxxxx',
    'database' => 'test',
]);

To create select:

$sql = new \Zend\Db\Sql\Sql($db);
$select = $sql->select()
    ->from('posts')
    ->where(array('cat_id' => $catId))
    ->order('date_posted DESC')
    ->limit(5);
$statement = $sql->prepareStatementForSqlObject($select);
$results = $statement->execute();

Or, if you want to get pure SQL from the $select:

$selectSql = $sql->getSqlStringForSqlObject($select);

Docs might be helpful. It can be even simpler if TableGateway is used.


Using Zend_Db would even be preferable (IMHO) over using Raw PDO. Just create a $db Object and then create SQL Statements using Zend_Db_Select Class and pass the $select SQL Statement to the fetch* (fetchRow, fetchAll...) Methods.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜