没有Zend Framework的Zend_Db

时间:2011-01-30 03:18:37

标签: php zend-framework zend-db

我想在没有Zend_Framework的情况下使用Zend_Db。我希望将Zend_Db合并到我现有的网站上,而不是使用Zend Framework制作的。可以像这样使用Zend_Db吗?你能推荐一个好的教程或示例如何做好吗?

3 个答案:

答案 0 :(得分:10)

在某种程度上,这取决于您使用的Web框架。但是,总的来说,Zend_Db documentation在这方面非常明确。

在引导程序中创建适配器实例。举个例子:

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

如果您打算使用Zend_Db_Table,则可以将其设为默认适配器:

Zend_Db_Table::setDefaultAdapter($db);

在任何情况下,将此适配器保存在可以访问它的位置是有帮助的。例如:

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

然后在您的下游代码中,使用此适配器为select()insert()update()delete()等创建查询:

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

希望这会有所帮助。干杯!

答案 1 :(得分:1)

对于Zend Framework 2. *,创建适配器将是:

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

创建选择:

$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();

或者,如果你想从$ select:

获得纯SQL
$selectSql = $sql->getSqlStringForSqlObject($select);

Docs可能会有所帮助。如果使用TableGateway,它可以更简单。

答案 2 :(得分:0)

使用Zend_Db甚至比使用Raw PDO更受欢迎(恕我直言)。只需创建一个$ db对象,然后使用Zend_Db_Select类创建SQL语句,并将$ select SQL语句传递给fetch *(fetchRow,fetchAll ...)方法。