15

I'm selecting records from a database using the equivalent of this query:

SELECT * FROM reports WHERE user_id IN (3, 6, 22);

The function calling fetchAll() has an argument that's an array of the user IDs, and this call works just fine:

$resultSet = $this->getDbTable()->fetchAll('user_id IN (' . implode(', ', $userIds) . ')');

However, I would like to use an array for the where clause because there will probably be other restrictions to the query later... and I can't figure it out for the life of me. I thought it would be some variation on the following:

$resultSet = $this->getDbTable()->fetchAll(array('user_id IN ?' => '(' . implode(', ', $userIds) . ')'));

But so far no dice. Can someone provide the correct syntax here?

Cyranix
  • 337
  • 1
  • 4
  • 11

3 Answers3

23
$data = array(1, 2, 3);
$select->where('user_id IN (?)', $data);
Vladimir Mihailenco
  • 3,382
  • 2
  • 24
  • 38
  • Well, it's for fetchAll() instead of where(), but that's the ticket. I had tried 'user_id IN (?)' before but associated it with the result from implode(), not just the array directly. – Cyranix Feb 17 '10 at 21:16
2

In Zend 2

$data = array(1, 2, 3);
$select->where('user_id', $data);
Fábio Paiva
  • 569
  • 4
  • 7
0
$select = $this->getSql()->select();
$select->where("reports.user_id in ('3','6','22')"); 
$resultSet = $this->selectWith($select);             
//echo $select->getSqlString();die;
return $resultSet;
susheel sahoo
  • 107
  • 2
  • 8
  • Although this code may help to solve the problem, providing additional context regarding _why_ and/or _how_ it answers the question would significantly improve its long-term value. Please [edit] your answer to add explanation, including what limitations and assumptions apply. – Toby Speight Aug 08 '16 at 12:08