Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用php pdo从数据库返回正确的行数_Php_Mysql_Pdo - Fatal编程技术网

无法使用php pdo从数据库返回正确的行数

无法使用php pdo从数据库返回正确的行数,php,mysql,pdo,Php,Mysql,Pdo,我试图从数据库中的表返回行计数,但仍然得到错误的值。我需要行计数来处理分页的子集值。我的表中有11项,但我只返回1项,无法找出原因: 我的外部连接文件: try { $pdo = new PDO('mysql:host=localhost;dbname=name', 'admin', 'password'); } catch (PDOException $e) { exit('Database error.'); } 我的文章类别: class Article {

我试图从数据库中的表返回行计数,但仍然得到错误的值。我需要行计数来处理分页的子集值。我的表中有11项,但我只返回1项,无法找出原因:

我的外部连接文件:

try {
    $pdo = new PDO('mysql:host=localhost;dbname=name', 'admin', 'password');

} catch (PDOException $e) {
    exit('Database error.');
}
我的文章类别:

class Article {

    public function fetch_all_articles($start, $max) {
        global $pdo;

        $query = $pdo->prepare("SELECT * FROM articles ORDER BY article_timestamp DESC LIMIT $start, $max");
        $query->execute();
        $articles = $query->fetchAll();
        $query->closeCursor();

        return $articles;
    }

    public function fetch_num_rows() {
        global $pdo;

        $query = $pdo->prepare("SELECT COUNT(*) FROM articles");
        $query->execute();
        $rowCount = $query->rowCount();
        $query->closeCursor();

        return $rowCount;
    }
}
和我的index.php文件:

$maxArticles = 4;                             //Show only 4 articles per page
$page = $_GET['page'] ? $_GET['page'] : 0;  //Get current page number or assign $page = 0 if no page number exists
$startRow = $page * $maxArticles;           //Get current article subset value                                          

$article = new Article;
$articles = $article->fetch_all_articles($startRow, $maxArticles);    //articles array
$numArticles = $article->fetch_num_rows();                          //number of articles
$rowCount = $article->fetch_num_rows();                             //number of articles

echo $rowCount;
echo $numArticles;
是的,我确实需要$rowCount和$numArticles,它们被用于两个不同的目的

有人能帮我吗?

你应该换个新的

$rowCount = $query->rowCount();

另外,看看

调用fetch_num_rows两次没有任何意义,只需执行以下操作即可:

$numArticles = $rowCount = $article->fetch_num_rows();
从tableName中选择COUNT*只返回一行。该行中的数据是表中的行数。所以$query->rowCount将始终为1。如果需要行数,则需要使用:

$query = $pdo->prepare("SELECT COUNT(*) ct FROM articles");
$query->execute();
$rowCount = $query->fetch(PDO::FETCH_OBJ)->ct;

谢谢,这帮了大忙
$query = $pdo->prepare("SELECT COUNT(*) ct FROM articles");
$query->execute();
$rowCount = $query->fetch(PDO::FETCH_OBJ)->ct;