Для правильного вопроса надо знать половину ответа
Переписать запрос по стандарту SQL. При использовании GROUP BY все поля, выбираемые в SELECT должны быть либо полями, по которым идёт группировка, либо результатами агрегатных функций.
У вас поле date не входит ни в GROUP BY, ни в агрегатную функцию. Дата из какой именно агрегируемой строки должна попасть в ответ?
Для правильного вопроса надо знать половину ответа
В триггерах на UPDATE доступны две псевдостроки - OLD и NEW. Первая содержит значения колонок до изменения, вторая - после изменения. Соответственно, используйте OLD.`name` и NEW.`name`.
Для правильного вопроса надо знать половину ответа
А зачем тут multi_query, если вызывается один запрос INSERT?
Перед циклом делаете prepare, привязываете параметры через bind_param. В цикле устанавливаете значения переменных и вызываете execute.
Для правильного вопроса надо знать половину ответа
С чего вы взяли, что multi_query - это асинхронный запрос? PHP вообще асинхронно не работает. Если у вас используется какая-то своя библиотека, то ответ надо искать в её доках.