$query = $this->buildQuery(array('*')); $query .= $this->applyOrder(); // shuffle around hackily TODO: fix this abomination $localParameterList = $this->parameterList; $this->parameterList = array(); $query .= $this->applyLimit(); $limitParameters = $this->parameterList; $statement = $this->database->prepare($query); $countStatement = $this->database->prepare($countQuery); $result = array(); foreach ($values as $v) { // reset parameter list $params = $localParameterList; $params[] = $v; $countStatement->execute($params); // reapply the limit parameters $params = array_merge($params, $limitParameters); $statement->execute($params);