Eagle_f90 has asked for the wisdom of the Perl Monks concerning the following question:

I have written a script that will connect to my SQL 2k DB and pull a random image form a random table. All works well and fine execpt that at some point, and I am not sure where, $gallery gets propergated with 'ffxi' and screws everything up.
#!/user/bin/perl -w use CGI q~:standard~; use CGI::Carp qw(fatalsToBrowser); use strict; use DBI; print "Content-type: text/html\n\n"; my ($dbh, $sth, $haveimage, @games, @holder, $gallerynumber, $gallery, + @imghold, @images, $imagenumber, $image, $groupname, $test); $haveimage = 'No'; $dbh = DBI -> connect ('dbi:ODBC:read', 'uid', 'pass') or die "$DBI::e +rrstr;"; $sth = $dbh -> prepare (q~select table_name from FFImages.information_ +schema.tables where table_catalog = 'FFImages' and table_type = 'Base + Table' and table_name != 'dtproperties' and table_name != 'avatars'~ +) or die "$DBI::errstr;"; $sth -> execute() or die "$DBI::errstr;"; while (@holder = $sth -> fetchrow_array){ @games = (@games, @holder); } do { $gallerynumber = int(rand(@games)); $gallery = $games[$gallerynumber]; #There are 48 possible results +for $Gallery $sth = $dbh -> prepare (qq~select ImageName from FFImages.dbo.$gal +lery~) or die "$DBI::errstr;"; $sth -> execute() or die "$DBI::errstr;"; while (@imghold = $sth -> fetchrow_array){ @images = (@images, @imghold); } if ($images[0] ne ''){#Right now the only $gallery results that wo +uld return true here are 'ffac' and 'ffxi' $imagenumber = int(rand(@images)); $image = $images[$imagenumber]; $sth = $dbh -> prepare(qq~select GroupName from FFImages.dbo.$ +gallery where ImageName = '$image'~) or die "$DBI::errstr;"; #Everyth +ing is working fine up to and including this part, after here no matt +er what was in $gallery it is not longer there $sth -> execute() or die "$DBI::errstr;"; $groupname = $sth -> fetchrow_array; print qq~<img src="http://admin.ffinfo.com/cgi-bin/fileprotect +ion/fileprotection.pl/$image?file=images/$gallery/$groupname/$image" +style="max-height: 143px; max-width: 143px" alt="Random Final Fantasy + Image" />~; #At this point $gallery now contains 'ffxi' even if it d +id not before hand. $haveimage = 'Yes'; } } while ($haveimage ne 'Yes'); $dbh -> disconnect();
Can anyone tell me why $gallery is changed twords the end of the script when I never change it, at least I can not see it changing.

Replies are listed 'Best First'.
Re: Where in the world is it getting 'ffxi' at?
by spiritway (Vicar) on Mar 04, 2006 at 12:04 UTC

    Just a wild guess - is there somewhere that is performing an arithmetic operation on the string? You might try logging your variables as the script runs, to determine where the change occurs.

      After following your advice and logging the variables I came to find out nothing is wrong with the script. The issue is on the DB side. It seams I imported two tables into one on accedent, so it was pulling all information from ffxi table. Thanks.