in reply to DBI/MySQL question.

I tried your code and it works the way it should, but personally I don't like the $sth->bind_col( 2, \$val1); bits. I find this rather opaque and doing too much of action at a distance. Also the $sth->fetch method does not say much what it is doing: is it fetching one row at a time or all at once; in which fields do the results go (you have to check your $sth->bind_col incantations to know); ...

I would re-write your code as follows:

my $sth= $dbh->prepare( 'SELECT * FROM user_items WHERE indexnum = ?') +; $sth->execute($value); while(my (undef, $val1, $val2, $val3) = $sth->fetchrow_array) { print "$val1, $val2, $val3\n"; }
At a glance you can see that you fetch one row at a time and return the fields as an array and that the second, third and fourth field are being stored in the (lexical) variables $val1, $val2 and $val3

Note that I pulled the $value variable out of the SQL statement and used a placeholder to avoid any quoting problems. The $value goes into the execute-method. Much cleaner that way!

CountZero

"If you have four groups working on a compiler, you'll get a 4-pass compiler." - Conway's Law