There's a problem with MySQL and placeholders which I discovered in
Re^2: DBD::mysql Unusual Behavior. The only sure-fire way to work around it is to ensure that your string values are string values. In short, this means that the internal type of the variable is set correctly.
If the first variable sent into the placeholder is an integer, subsequent calls using the same statement handle might fail on string data. Here, this is just a
do() call, so you're probably okay. If you use
prepare() and more than one
execute() you can encounter problems.
sub insertAttribute
{
my ($serverID, $featureID, $value) = @_;
my $sqlINS = "INSERT INTO attribute VALUES (?,?,?)";
$dbh->do($sqlINS, {},
"$serverID",
"$featureID",
"$value");
}
Of course, this might depend on the version of
DBD::mysql that you use.