> Actually that's not true - the signature for fetchAll in Zend_Db_Table
uses an already-resolved string for the 'WHERE' clause.

Right, I see I missed the "in Zend_Db_Table" in the question. Good to know.
:)

But the code does work when using a Zend_Db_Adapter.  


  _____  

From: Simon Mundy [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, December 12, 2007 4:50 PM
To: Terre Porter
Cc: fw-general@lists.zend.com
Subject: Re: [fw-general] fetchAll($where, $order)



$sql = "select * from sometable where id = ?"
$data = 1;

FetchAll ($sql, $data)



Would replace the ? with the vaule of 1.


Actually that's not true - the signature for fetchAll in Zend_Db_Table uses
an already-resolved string for the 'WHERE' clause. 

If you want to utilise a number of placeholders from within a Zend_Db_Table
you can approach it a number of ways, but here's two simple examples:-

Currently
$db = $this->getAdapter();
$where = array($db->quoteInto('id = ?', $id),
  $db->quoteInto('condition2 = ?', $foo),
  $db->quoteInto('condition2 = ?', $foo));
$rowSet = $this->fetchAll(join(' AND ', $where), $limit); // Assumes $limit
is already set elsewhere

New Zend_Db_Table class in incubator
$select = $this->select()->where('id = ?', $id)
                         ->where('condition2 = ?', $foo)
                         ->where('condition3 = ?', $bar)
                         ->limit($limit);
$rowSet = $this->fetchAll($select);

Named placeholders are also being considered for the Zend_Db_Select
component but not yet available.

Cheers



When we use Zend_DB_Table_Abstract fetchAll($where, $order) to get all the
records from table. In the where clause, if we have several condition, for
example, condition1, condtion2, condition3. How do we put all these
conditions in the where clause? Thank in advance.



--

Simon Mundy | Director | PEPTOLAB

""" " "" """""" "" "" """"""" " "" """"" " """"" "  """""" "" "

PeptoLab will be closed:
Saturday 15th  December through until Monday 17th December 
Saturday 22nd December through until Wednesday 2nd January
For urgent requests, please call 0438 046 061


202/258 Flinders Lane | Melbourne | Victoria | Australia | 3000
Voice +61 (0) 3 9654 4324 | Mobile 0438 046 061 | Fax +61 (0) 3 9654 4124
http://www.peptolab.com

Reply via email to