Согласно документации PDO (Zend_Db использует PDO в качестве бэкэнда доступа к БД):
Вы не можете привязать несколько значений к одному именованному параметру, для
Например, предложение IN () оператора SQL.
Итак, вам, вероятно, нужно немного подготовить свой запрос, чтобы он содержал столько маркеров, сколько элементов в массиве. Возможное решение может быть следующим:
// Compose the query
$queryToExecute = "UPDATE {$this->_name} SET status = status | ? WHERE id IN (";
$questionMarks = array();
for ($id in $ids) {
$questionMarks[] = '?';
}
$queryToExecute .= implode(',', $questionMarks);
$queryToExecute .= ')';
// $queryToExecute should have the format "UPDATE ... WHERE id IN (?,?,?,...?)"
// Execute it
$result = $this->_db->query(
$queryToExecute,
array($status, $ids)
)->execute();
Надеюсь, это поможет,