Diese Frage ist ein bisschen alt, aber ich dachte, ich würde nur zu Referenzzwecken hinzufügen.
Ich würde empfehlen, Zend_Db_Select mit Zend_Db zu verwenden. Ich habe in letzter Zeit viel mit Zend_Db gemacht. Mehr von Zend_Db_Select reference guide.
Hier können Sie einen Zend_Db Adapter übernehmen haben: $ 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();
, dass die Grundlagen von Ihrem gegebenen Beispiel ist, aber das Zend Framework Referenzhandbuch auf dem Objekt auswählen hat viele gute Informationen darüber, wie um noch komplexere Anfragen mit JOINS, UNIONS, GROUP BY, LIMIT, HAVING etc. zu erstellen.
Wenn Sie einen Aliasnamen für eine Tabelle oder Parameter verwenden wollte, verwenden Sie ein assoziatives Array mit dem Aliasnamen der Indexwert ist:
# SELECT p.* FROM products AS p
$select->from('p' => 'products');
Wenn Sie nur ausgewählte Felder zurückkehren möchten, die Sie hinzufügen ein Array von Feldnamen als zweiten Parameter:
# SELECT model FROM products
$select->from(products, array(model));
Eigentlich sollte die obigen produzieren könnte vollständig qualifizierte SQL als:
SELECT 'products'.model FROM 'products'
aber ich schrieb das obige für die Kürze und Klarheit in dem Beispiel.
Eine Sache, auf die ich gerade gestoßen bin, ist die Verwendung von AND und OR in der WHERE-Bedingung.
# WHERE a = $a
$select->where('a = ?', $a);
# WHERE a = $a AND b = $b
$select->where('a = ?', $a);
$select->where('b = ?', $b);
# WHERE a = $a OR b = $b
$select->where('a = ?', $a);
$select->orWhere('b = ?', $b);
# WHERE a = $a AND b = $b
$select->orWhere('a = ?', $a);
$select->where('b = ?', $b);
Beachten Sie, dass die folgende "wo" -Funktion, die Sie verwenden, mit der vorherigen Anweisung als dieser Operand kombiniert wird. Ok, das klang verwirrend.
Wenn das zweite "where" ein "OR" ist, wird es eine ODER-Bedingung sein. Wenn das zweite "wo" ein "UND" ist, lautet die Aussage "AND".
Mit anderen Worten, die erste WHERE-Funktion wird in Bezug auf die Bedingung ignoriert, die es verwenden wird.
In der Tat habe ich gestern nur eine Frage zu Stack Overflow in Bezug auf eine complex WHERE using select gestellt.
Hoffe, dass hilft! Prost!
toll das funktioniert. Dankeschön – Max