2011-01-30 32 views
6

Tôi muốn sử dụng Zend_Db mà không có Zend_Framework. Tôi muốn kết hợp Zend_Db cho trang web hiện tại của tôi mà không được thực hiện bằng cách sử dụng Zend Framework. Có thể sử dụng Zend_Db như thế này không? Bạn có thể giới thiệu hướng dẫn hay ví dụ tốt như thế nào để làm điều đó tốt?Zend_Db không có Zend Framework

Trả lời

10

Ở một mức độ nào đó, điều này phụ thuộc vào khung web bạn đang sử dụng. Nhưng, nói chung, các Zend_Db documentation là khá rõ ràng trong lĩnh vực này.

Tạo một cá thể bộ điều hợp trong bootstrap của bạn. Như một ví dụ:

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

Nếu bạn có kế hoạch để sử dụng Zend_Db_Table, sau đó bạn có thể làm cho này adapter mặc định:

Zend_Db_Table::setDefaultAdapter($db); 

Trong mọi trường hợp, nó rất hữu ích để có bộ chuyển đổi này lưu một nơi mà bạn có thể truy cập nó. Ví dụ:

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

Sau đó trong mã hạ lưu của bạn, sử dụng bộ chuyển đổi này để tạo các truy vấn cho select(), insert(), update(), delete(), vv:

$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. Chúc mừng!

+0

Câu trả lời toàn diện tốt ... –

+0

Cảm ơn bạn. Tôi sẽ thử cái này. – user594791

0

Sử dụng Zend_Db thậm chí còn thích hợp hơn (IMHO) so với sử dụng PDO thô. Chỉ cần tạo đối tượng $ db và sau đó tạo câu lệnh SQL bằng cách sử dụng lớp Zend_Db_Select và chuyển câu lệnh SQL $ select tới phương thức fetch * (fetchRow, fetchAll ...).

1

Đối với Zend Framework 2. *, tạo ra các bộ chuyển đổi sẽ là:

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

Để tạo chọn:

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

Hoặc, nếu bạn muốn để có được SQL tinh khiết từ $ chọn:

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

Docs có thể hữu ích. Nó thậm chí có thể đơn giản hơn nếu sử dụng TableGateway.