Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

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)


Comment on Re: DBI confusion
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1002515]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others rifling through the Monastery: (8)
As of 2014-12-27 02:14 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    Is guessing a good strategy for surviving in the IT business?





    Results (176 votes), past polls