On 20/12/2013 14:13, mimic...@gmail.com wrote:
Hi

I need to understand why selectrow_array() return only one column (first
column) when called in list context as in the code below. On the
otherhand selectrow_arrayref behaves correctly.

code
=====

You've missed out how you actually called selectrow_array and that is the important bit.

I suspect you are not calling it in list context.

if ($x){
         print "When using selectrow_array(), DBI returned:";
         print "\$x: $x \$y: $y";

         print "\n\n";
}else{
         print "DB returned no data\n\n";

}

selectrow_arrayref behaves correctly.

my ($arrref) = $dbh->selectrow_arrayref(qq{

You don't need brackets around $arrref here BTW. selectrow_arrayref only returns one value.

SELECT user,perm FROM access
WHERE token=\'Tt9VpStL4xADSDJQtd4AkMc6cVi66Mwmr9pMcCRgO4NVJ\'})|| die
"Could not query database:  $DBI::errstr\n";

my @retarr = @$arrref;

if (@retarr){
         print "When using selectrow_arrayref, DBI returned:";
         print "\@retarr contains: @retarr ";

         print "\n\n";
}else{
         print "DB returned no data\n\n";

}


Output
=========
perl misc_test.pl <http://misc_test.pl>
Use of uninitialized value $y in concatenation (.) or string at
misc_test.pl <http://misc_test.pl> line 69.
When using selectrow_array(), DBI returned:$x: markb $y:

When using selectrow_arrayref, DBI returned:@retarr contains: markb ro


Installed versions
============
perl -MDBD::mysql -le 'print $DBD::mysql::VERSION;'
4.013
  perl -MDBI -le 'print $DBI::VERSION;'
1.609

Martin
--
Martin J. Evans
Wetherby, UK

Reply via email to