in reply to DBI bind_param problems

if($@){ print "There was a error"; }
This is not a very informative error message.
Do you have RaiseError set (see the DBI docs)? Set it and include $@ in your error message.

One wild guess is that '$id' has embedded newline(s) or other characters in it.