14

次のクエリと同等のものを使用して、データベースからレコードを選択しています。

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

fetchAll() を呼び出す関数には、ユーザー ID の配列である引数があり、この呼び出しは問題なく機能します。

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

ただし、後でクエリに他の制限がある可能性が高いため、where句に配列を使用したいと思います...そして、一生それを理解することはできません。私はそれが次のいくつかのバリエーションになると思いました:

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

しかし、これまでのところサイコロはありません。誰かがここで正しい構文を提供できますか?

4

3 に答える 3

21
$data = array(1, 2, 3);
$select->where('user_id IN (?)', $data);
于 2010-02-17T21:02:23.887 に答える
2

Zend 2 で

$data = array(1, 2, 3);
$select->where('user_id', $data);
于 2014-01-23T18:06:55.207 に答える
0
$select = $this->getSql()->select();
$select->where("reports.user_id in ('3','6','22')"); 
$resultSet = $this->selectWith($select);             
//echo $select->getSqlString();die;
return $resultSet;
于 2016-08-08T10:04:34.233 に答える