Код почему то запускаеться 5 раз хотя такого не должно быть в чем может быть проблема?
А что вас удивляет? Все работает как написано.
SQL-запрос вернул 5 записей, вы перебираете их циклом, в котором при первом проходе выполняется некий код с инвентарем, а на остальных четырех проходах i=1 и срабатывает негативная ветка, где печатается символ нуля.
Судя по тому, как вы неправильно пользуетесь шаблонной строкой и какой вопрос задаете, вы далеки от программирования. Надо подучиться питну и основам алгоритмизации.
А еще так подставлять параметры в запрос опасно, нужно передавать их отдельно в execute.
Потому что из базы вернулось 5 строк.