В языке Си есть масса случаев неопределённого поведения программы - когда результат выполнения может различаться на разных архитектурах процессора, на разных компиляторх, на разных уровнях оптимизации.
Одно из правил, позволяющих избежать этой проблемы: "никогда не используйте переменную с пред/пост-инкрементацией/декрементацией два или более раз в одном выражении".
Сергей Яковлев правильно сказал: достаточно i++ (или ++i, что в данном случае то же самое).
Не с той стороны подходите. Вместо 400 000 000 страниц можно сделать 1! Сделать api, пользователь заходит на страницу, выбирает 2 города и страничка обращается к api, оно возвращает нужные данные на эту страничку. Ну это так, в 2-х словах.
плейсхолдерами могут быть только значения полей, но не имена полей/таблиц/etc.
то есть ваш запрос все равно не выполнится, даже с правильным экранированием.
имена полей принято заключать в обратные кавычки для избежания конфликтов c ключевыми словами самого SQL.
Есть несколько способов. Из дешёвых - cron на секунду, который каждую секунду запускает скрипт и проверяет лоты. У такого варианта есть ограничения - он должен отрабатывать очень быстро.
Можно обойтись timestamp-ами в базе и раз в некоторое время выбирать все истекшие лоты за последний неотработанный отрезок времени, ограничив также какое-либо взаимодействие с истекшими лотами в остальных частях системы.
Найти бандл-репозиторий на гитхабе и создать им пулл-реквест. Ваш КО.
Если такового нет - ну банально связаться с разработчиками и почтой предложить желаемые изменения. В основном разрабы - довольно адекватные люди и будут рады помочь.