我正在开设一个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。
希望你们明白我想说的是什么。
祝你好运
答案 0 :(得分:1)
rowCount()
在MySQL和其他一些用户上使用它真的很安全。它对SQLite等便携式应用程序不起作用。
来自the manual:
如果关联的PDOStatement执行的最后一条SQL语句是 一个SELECT语句,一些数据库可能会返回行数 由该声明返回。但是,不保证这种行为 适用于所有数据库,不应依赖于便携式数据库 应用