2011-01-30 63 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,它可以更簡單。