hotti: DBI und Platzhalter

Beitrag lesen

hi,

die Exception tritt auf und $@ ist befüllt, hier mal die komplette Method

  
# Shop::Warenkorb methods  
# Artikel in den Warenkorb  
sub insert{  
	my $self = shift;  
	my $anz = shift or return;  
  
	$anz = 'otto'; # provoziere Fehler, $anz muss integer sein  
  
	my $st = qq(  
		INSERT INTO warenkorb VALUES(?,?,?, NOW())  
		ON DUPLICATE KEY UPDATE anz = $anz, datime = NOW()  
	);  
	  
	my $sth = $self->{DBH}->prepare($st);  
	eval { $sth->execute($self->{SID}, $self->{URL}, $anz) };  
	  
	if($self->{EVE} = $@){  
		$self->{ERR} = $DBI::errstr;  
		return;  
	}  
	else { return 1 }  
}  

Allerdings ist die Fehlermeldung unverständlich:

DBD::mysql::st execute failed: Unknown column 'otto' in 'field list'

Was zum Teufel passiert hier?

Setze ich direkt
eval { $sth->execute($self->{SID}, $self->{URL}, 'otto') };

erhalte ich wie erwartet ein
DBD::mysql::st execute failed: Incorrect integer value: 'otto' for column 'anz'

???