2011-01-30 134 views
6

我想使用没有Zend_Framework的Zend_Db。我想为我现有的网站添加Zend_Db,而这个网站并不是使用Zend Framework制作的。有没有可能像这样使用Zend_Db?你能推荐好的教程或例子吗?没有Zend框架的Zend_Db

回答

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

希望这有助于。干杯!

+0

很好的综合答案... – 2011-01-30 14:40:24

0

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

1

对于Zend框架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(); 

或者,如果你想从$纯SQL选择:

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

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