SQLite与MySQL - > rowCount()

时间:2015-12-09 13:27:37

标签: php mysql pdo sqlite

我正在开设一个CRUD课程,可以帮助我轻松完成工作。 现在我正在尝试使用“SQlite”和“MySQL”。 用于MySQL的CRUD没有问题,但是自从我试图从SQLite数据库获取数据以来,它让我的生活变得艰难:)。

以下代码是用于从给定表中获取所有内容的工作MySQL CRUD函数。

public function getAll($table){        
    $stmt = $this->db->prepare("SELECT * FROM $table");
    $stmt->execute();

    if($stmt->rowCount()){
        $item = $stmt->fetchAll(PDO::FETCH_ASSOC);
        return $item;
    }


    return false;
}

如果我在SQLite数据库上尝试上面的函数,它会返回任何内容。

然而,当我改变代码时,它会返回所请求的项目。 下面的函数适用于SQLite数据库,但有很多验证。

public function getAll($table){        
    $stmt = $this->db->prepare("SELECT * FROM $table");
    $stmt->execute();

    $items = $stmt->fetchAll(PDO::FETCH_ASSOC);
    return $items;

}

所以我的结论是rowCount()函数不适用于SQLite。 我如何解决这个问题,以便SQLite CRUD首先看看是否有真正的回归? 如果它返回,我可以退回物品。 如果行为空,则应返回false。

希望你们明白我想说的是什么。

祝你好运

1 个答案:

答案 0 :(得分:1)

rowCount()在MySQL和其他一些用户上使用它真的很安全。它对SQLite等便携式应用程序不起作用。

来自the manual

  

如果关联的PDOStatement执行的最后一条SQL语句是   一个SELECT语句,一些数据库可能会返回行数   由该声明返回。但是,不保证这种行为   适用于所有数据库,不应依赖于便携式数据库   应用