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