UPDATE statements causing me grief!

Eirik Toft <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Organization http://groups.google.com
Message-ID <6e0a3d8f-8d3e-443c-8a6f-cc45239476ff@gd10g2000vbb.googlegroups.com>
Greetings, been a DBI user for years now working with stuff from
unixODBC, Oracle, MySQL, etc...etc...

So, the issue I'm having is with a simple update statement to a mysql
database.

Here's a small snippet of code....

my $MAPSQL="UPDATE varmaptest SET value=? WHERE grpid=(SELECT id FROM
machinegroups WHERE name=?) AND varid=(SELECT id FROM variables WHERE
name=?)";

my $DBUSER="user";
my $DBPASS="password";
my $SQLDS="dbi:mysql:database=$CADB;host=databasehost";

my $dbh = DBI->connect($SQLDS,$DBUSER,$DBPASS);

my $sth = $dbh->prepare($MAPSQL);
unless ($sth->execute("newval","group1.mygroup.mine","varname1")) {
   warn "Database error: ".$dbh->errstr;
}

So, for some reason, the update never happens, and I get no errors. I
have enabled SQL tracing and from the output, I get the following
statement:

UPDATE varmaptest SET value='newval' WHERE grpid=(SELECT id FROM
machinegroups WHERE name='group1.mygroup.mine') AND varid=(SELECT id
FROM variables WHERE name='varname1');

Now, if I actually run the mysql client, and paste this statement into
it and execute it, it works perfectly.

I'm using perl 5.10.1, mysql database version 5.1.49, DBI version
1.612.

On a side note, because I know someone is going to ask, I use the same
database handle ($dbh) on other SELECT statements and they all return
data fine (so it's not a database connectivity issue).

Does anyone have any ideas, or at least can give me a good kick in the
head as to where I should look next?

Thanks in advance;

Eirik..
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.