Вы получаете ошибку в $ DBI :: errstr?Помимо любого выходного DBI, который я могу вам дать, первоначальная потенциальная проблема, которую я вижу, заключается в том, что вы вставляете строку с id = 1, но ваше обновление пытается обновить строки с id = 2.Там не будет никаких строк, где id = 2 для обновления.
Пара других вещей, о которых вы также можете знать.Подобная интерполяция ваших переменных прямо в ваши запросы является плохой практикой и ведет к атакам с использованием SQL-инъекций.Вы должны посмотреть документацию DBI по использованию заполнителей для этого.Заполнители также позволяют наиболее эффективно использовать метод prepare (), когда вам нужно выполнить один и тот же запрос для разных значений в цикле.Если вы просто сделали это, потому что это просто быстрая проверка, и вы не сделали бы это в «реальном» коде, то извините за беспокойство.
Вам также не нужно вызывать prepare () передделать().do () обрабатывает вызов функции prepare ().