On Wed, Aug 28, 2002 at 11:11:23AM -0500, Dan Muey wrote: > > >I think you will need to show us more of your code. Where are the ids > >coming from? > > First the html generated by the script : > <input type=checkbox name="IDS" value="26,"> > <input type=checkbox name="IDS" value="18,">
> @recs = split(/,/, $ids); > > >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; > > $tmp prints out as : DELETE FROM customer WHERE ID IN ('25','\x018') (Woops, I should have made that sprintf "%02x", ord $1) > sure enough odd char > It seems to get there somewhere in between pressing submit and after > parse > ( I use the &ReadParse subroutine in cgi-lib ) I thought that might be it. cgi-lib uses the null character to join multiple values for a single parameter. Instead of including a comma in each value to split on later, you can just split on /\0/. However, I would really recommend switching to the CGI module, which will do all the parameter parsing and unencoding for you. Ronald