Ошибка печати:
... or die print "er $DBI::errstr";
не выглядит правильно.
Как уже упоминал Алан, вы исправили двойное двоеточие, но вызов print, который выполняет die, возвращает 1. (1 == успешная печать ... где-то)
Измените синтаксис вашего кубика следующим образом:
... or die "er $DBI::errstr";
Вы должны получить что-то вроде этого:
er {DBI_ERROR_MESSAGE} at {Script_Name} line XXX.
Вы написали:
$dbh = DBI->connect("DBI:mysql:$dbname:$dbhost","$dbuser","$dbpass");
my $sth = $dbh->prepare( "INSERT INTO call_fields VALUES ( ?, ?, ?, ? )" ) or die print "$DBI:errstr";
$sth->execute( "NULL", 0, 0, "testing" ) or die print "er $DBI::errstr";
и еще один пример:
$dbh->do(q/insert into call_fields values(null,0,0,"testing") /) or die "$dbh::errstr";
Это сравнение "яблок и апельсинов".Первый делает вставку строки «NULL», а второй вставляет значение «null».
Я предполагаю, что ваша таблица call_fields, которая получает первое подготовленное входное значение, не принимает строки,и, следовательно, $ sth-> execute не работает.