This helped.

Thanks

Mimi



> On 23 Dec 2013, at 15:28, Bruce Johnson <john...@pharmacy.arizona.edu> wrote:
> 
> 
>> On Dec 23, 2013, at 2:30 AM, mimic...@gmail.com wrote:
>> 
>> The SQL query is the same in both cases, and as can be seen, the query is 
>> expected to return two columns (user and perm), but selectrow_array() 
>> returns undef for the second column (perm in this case).
>> 
>> my ($x, $y)  = $dbh->selectrow_array(qq{SELECT user,perm FROM access
>> WHERE token=\'Tt9VpStL4xADSDJQtd4AkM
>> c6cVi66Mwmr9pMcCRgO4NVJ\'})|| die
>> "Could not query database:  $DBI::errstr\n";
>> 
>> In the above, $y is undef (or blank) although MySQL has values for both 
>> (user and perm) columns.
> 
> The problem, which Martin correctly noted, is that  selectrow_array returns a 
> single thing, an array containing the returned data.
> 
> my ($x, $y)  = $dbh->selectrow_array(SQL);
> 
> is giving you a pointer to the returned array, $x, and an undef $y.
> 
> Because perl is lazy under some circumstances, when you say print $x it gives 
> you $$x[0], whereas the value you expect in $y is actually in $$x[1]. (I've 
> been bitten by this on occasion)
> 
> to get what you actually want you should do:
> 
> $arr = $dbh->selectrow_array(SQL);
> ($x, $y) = @$arr;
> 
> Now $x and $y contain what you expect them to.
> 
> (What Martin did in @retarr = @$arrref; )
> 
> 
> 
> -- 
> Bruce Johnson
> 
> "Wherever you go, there you are." B. Banzai, PhD
> 

Reply via email to