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

Reply via email to