Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling

Re: DBI confusion

by toke (Initiate)
on Nov 06, 2012 at 16:14 UTC ( #1002515=note: print w/replies, xml ) Need Help??

in reply to DBI confusion

I know this is entry very old but I have to correct. DBI execute() never returns 'E0E' but '0E0' which evaluates to 0 in int context and true in boolean context. DBI selectrow_arrayref() returns an reference to an array or undef.

In your 1st case:

$arrayRef is undef when an error occours => false
$arrayRef points to an empty list when no results are fetched => false
$arrayRef points to array with the first row of data. => true
You can use the // operator to check for undef. Like $arrayRef = $dbh->selectrow_arrayref($QUERY) // die "Error: " . $dbh->errstr;

In your 2nd case:

$result > 0 you got results. =>  true
$result == "0E0" No results - no error => true
$result == undef Error. => false
Some recommendations:
  • use RaiseError and eval{} and error checking
  • Never to store passwords but salted hashes
  • As the fellow Monks suggested also use Placeholders (if fully supported by driver) or at last $dbh->quote($string)

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002515]
[choroba]: my son #2 would eat them all, regardless of the design :-)

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2017-12-16 16:07 GMT
Find Nodes?
    Voting Booth?
    What programming language do you hate the most?

    Results (455 votes). Check out past polls.