Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
226 views
in Technique[技术] by (71.8m points)

php - PDO returns wrong rowCount() after SELECT statement

Im executing code similar to this:

// first select
$query = $link->prepare("
            SELECT id FROM table
            WHERE name = ?;"); 

$param = 'foo';

$query->bindParam(1, $param); // should return 1 row
$query->execute();
echo $query->rowCount(); // displays 0 (??????)

Other example:

// second select
$query = $link->prepare("
            SELECT id FROM table
            WHERE name = ?;"); // should return 0 rows

$param = 'bar';

$query->bindParam(1, $param);
$query->execute();
echo $query->rowCount(); // displays 1 (?????)

My table:

id | name
---------
1  | foo

I don't understand.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Some databases may return the number of rows returned by a SELECT statement. However, this behaviour is not guaranteed for all databases and should not be relied on .Manual You can use COUNT(*) and fetchColumn() as in following query to emulate rowCount().

$query = $link->prepare("SELECT COUNT(*) FROM table  WHERE name = ?");
$param = 'bar';
$query->bindParam(1,$param);
$query->execute();
// Check the number of rows that match the SELECT statement 
if($query->fetchColumn() == 0) {
    echo "No records found";
 }else{
        $query = $link->prepare("SELECT id FROM table WHERE name = ?")
        //Etc
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...