On Wed, Aug 28, 2002 at 09:33:19AM -0500, Dan Muey wrote: > print $query; > $dbh->trace(2,"trace.txt"); > $dbh->do($query) or die "Can not execute $query :" . $dbh->errstr . > "\n"; > print $query; > > Here is pasted in the output from the above two print $query bits : > DELETE FROM customer WHERE ID IN ('23','18') > DELETE FROM customer WHERE ID IN ('23','18') > > Here is the content of the trace.txt > > DBI::db=HASH(0x81bd0b4) trace level set to 2 in DBI 1.21-nothread > Note: perl is running without the recommended perl -w option > -> do for DBD::mysql::db (DBI::db=HASH(0x81bd03c)~0x81bd0b4 > 'DELETE FROM customer WHERE ID IN ('23','.18')') > <- do= 1 at mysql_man.cgi line 404 > -> disconnect for DBD::mysql::db (DBI::db=HASH(0x81bd03c)~0x81bd0b4) > imp_dbh->svsock: 8141a44 > <- disconnect= 1 at mysql_man.cgi line 47 > -> DESTROY for DBD::mysql::db (DBI::db=HASH(0x81bd0b4)~INNER) > <- DESTROY= undef during global destruction > > So for some reason the do() seems to be adding a '.' in front of all > ids except for the first one. No wonder it doesn't match the ids!
I think you will need to show us more of your code. Where are the ids coming from? Perhaps the later ids include a non-printable character, which trace() is outputting as a period. Try printing your query like this: ($tmp = $query) =~ s/([^\x20-\x7E])/'\x' . sprintf "%x", ord $1/ge; print $tmp; Ronald