Прежде всего, ваш синтаксис неправильный, он должен быть
executeQuery('...', $messages, $startDate, $endDate);
вместо
executeQuery('...', [$messages, $startDate, $endDate]);
(обратите внимание на избыточный []
в вашей версии).
Во-вторых, если я правильно понимаю ваш вопрос, вам нужно развернуть массив $messages
и передать каждое значение в качестве отдельного аргумента executeQuery()
. Кроме того, вам необходимо динамически создать оператор SQL с таким количеством заполнителей внутри IN()
, как размер массива $message
. Как то так:
$placeholders = rtrim(str_repeat('?,', count($messages)), ',');
$params = $messages;
$params[] = $startDate;
$params[] = $endDate;
$sql = "... IN ($placeholders) AND 'time' BETWEEN ? AND ? ...";
$result = $this->client->executeQuery($sql, ...$params);