我在修一门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。
希望你们能理解我想说的。
诚挚的问候
发布于 2015-12-09 13:34:06
rowCount()在MySQL和其他几个方面的使用是非常安全的。对于像SQLite这样的可移植应用程序,它不能很好地工作。
来自手册
如果关联的PDOStatement执行的最后一条SQL语句是SELECT语句,则某些数据库可能返回该语句返回的行数。然而,并不是所有数据库都有这种行为的保证,便携式应用程序也不应依赖这种行为。
https://stackoverflow.com/questions/34180011
复制相似问题