Это можно переписать в Zend Framework несколькими способами.Вот как я обычно пишу выборки, например, используя Zend_Db_Table_Select .
<?php
// For brevity, $dbTable = a Zend_Db_Table object
// first construct the subquery/join for the IN clause
// SELECT idGameType FROM GameType HERE nameGameType = 'Xbox'
$subselect = $dbTable->select()
->from('GameType', array('idGameType'))
->where('nameGameType = ?', 'Xbox'); // quotes Xbox appropriately, prevents SQL injection and errors
// construct the primary select
// SELECT titleGame FROM Game WHERE idGameType IN (subquery)
$select = $dbTable->select()
->setIntegrityCheck(false) // allows us to select from another table
->from($dbTable, array('titleGame'))
->where('idGameType IN (?)', $subselect);
$results = $select->query()->fetchAll(); // will throw an exception if the query fails
if(0 === count($results)) {
echo "No Results";
}else{
foreach($results as $result){
echo $result['titleGame'] . '<br />';
}
}
Вы также можете написать SQL в виде строки, но, когда это возможно, объектно-ориентированный подход идеален, потому чтоэто делает запросы более переносимыми, а самое главное упрощает их защиту.
Пример:
$db = Zend_Db_Table::getDefaultAdapter(); // get the default Db connection
$db->select("select * from table where id = 3"); // doable, but not recommended
Вы также можете создать подготовленный оператор черезZend_Db_Statement
в PHP PDO расширение.
$sql = 'SELECT * FROM bugs WHERE reported_by = ? AND bug_status = ?';
$stmt = new Zend_Db_Statement_Mysqli($db, $sql);
$stmt->execute(array('goofy', 'FIXED'));
Первый подход, объектно-ориентированный свободный интерфейс - это то, что вы увидите больше всего, и метод, который я бы рекомендовал начать с ииспользуя.
Ознакомьтесь с страницами справочника Zend_Db и, в частности, Zend_Db_Table_Select
, Zend_Db_Table
и Zend_Db_Adapter
для получения дополнительной информации.Даже быстрое чтение по ZF Quickstart , уделяющее особое внимание части Db, полезно.Он покажет, как настроить классы таблиц в качестве шлюза между вашим приложением и базой данных.