Connecting Tech Pros Worldwide Help | Site Map

Finding if a record exists?

Gilles Ganault
Guest
 
Posts: n/a
#1: Mar 25 '08
Hello

I need to check if a phone number exists in a database. Using the
following SQL statement, what is the right way to code this in PHP?

$dbh = new PDO("sqlite:test.sqlite");
$sql = "SELECT 1 AS number FROM phones WHERE phones_tel='123'";
$row = $dbh->query($sql)->fetch();

//1.
if(!$row['number'])
print "Not found";
else
print "Found";

//2.
if(count($row))
print "Found";
else
print "Not found";

//3.
if(!$row[0])
print "Not found";
else
print "Found";

$dbh = null;

Thank you.
Guillaume
Guest
 
Posts: n/a
#2: Mar 25 '08

re: Finding if a record exists?


Gilles Ganault a écrit :
Quote:
I need to check if a phone number exists in a database. Using the
following SQL statement, what is the right way to code this in PHP?
>
$dbh = new PDO("sqlite:test.sqlite");
$sql = "SELECT 1 AS number FROM phones WHERE phones_tel='123'";
$row = $dbh->query($sql)->fetch();
I would say:
$numrows = $dbh->query($sql)->numrows();
I suppose numrows exists as well as fetch, then it should be lighter not
to fetch the data but only ask how many were returned.
Then, $numrows is either a PDO error or an integer which you can check.

Regards,

--
Guillaume
Gilles Ganault
Guest
 
Posts: n/a
#3: Mar 25 '08

re: Finding if a record exists?


On Tue, 25 Mar 2008 14:14:58 +0100, Guillaume
<ggrason@NOSPAM.gmail.com.INVALIDwrote:
Quote:
>I would say:
>$numrows = $dbh->query($sql)->numrows();
Thanks for the tip, but numrows() doesn't exist in PDO, and roCount()
isn't reliable when used with SELECT:

"For most databases, PDOStatement->rowCount() does not return the
number of rows affected by a SELECT statement. Instead, use
PDO->query() to issue a SELECT COUNT(*) statement with the same
predicates as your intended SELECT statement, then use
PDOStatement->fetchColumn() to retrieve the number of rows that will
be returned. Your application can then perform the correct action."

So I guess the right way is to use "SELECT count(*).

Thanks.
Closed Thread