Cette question est un peu vieux, mais je pensais que je voudrais juste ajouter à titre de référence.
Je recommande de commencer à utiliser Zend_Db_Select avec Zend_Db. J'ai beaucoup travaillé avec Zend_Db ces derniers temps. Plus de Zend_Db_Select reference guide.
Lets suppose que vous avez un adaptateur Zend_Db: $ this -> _ db
# this will get the Zend_Db_Select object
$select = $this->_db->select();
# now you build up your query with Zend_Db_Select functions
$select->from('mytable');
$select->where('field1 = ?', $field1);
$select->where('field2 = ?', $field2);
[...]
# echo to see the SQL (helps in debugging)
# SELECT * FROM mytable WHERE field1 = ? AND field2 = ? [...]
echo '<p>My SQL: ' . $select . '</p>';
# Execute the SQL/Fetch results
$results = $select->query()->fetchAll();
Ce sont les bases de votre exemple donné, mais le guide de référence Zend Framework sur l'objet select a beaucoup de bonnes informations sur la façon dont pour construire des requêtes encore plus complexes avec JOINS, UNIONS, GROUP BY, LIMIT, HAVING, etc.
Si vous voulez utiliser un nom d'alias pour une table ou paramètres, vous utilisez un tableau associatif avec le nom d'alias étant la valeur d'index:
# SELECT p.* FROM products AS p
$select->from('p' => 'products');
Si vous voulez retourner les champs sélectionnés, vous ajoutez un tableau de noms de champ comme second paramètre:
# SELECT model FROM products
$select->from(products, array(model));
en fait, ce qui précède pourrait devrait produire comme SQL complet:
SELECT 'products'.model FROM 'products'
mais j'ai écrit ce qui précède pour la brièveté et la clarté dans l'exemple. Une chose que je viens de rencontrer est l'utilisation de AND et OR dans la condition WHERE. Notez que, quelle que soit la fonction "where" que vous utilisez, elle se combine avec l'instruction précédente en tant qu'opérande. Ok, cela semblait confus.
Si le second "où" est un "OU", il s'agira d'un "OU" conditionnel. Si le second "where" est un "AND", l'instruction sera "AND". En d'autres termes, la première fonction WHERE est ignorée en termes de condition qu'elle utilisera.
En fait, je viens de poser une question sur Stack Overflow hier concernant faire un complex WHERE using select.
Espérons que ça aide! À la votre!
super qui fonctionne. merci – Max