我有一个与php / pdo和sqlite有关的问题 . 我已将一些代码从mysql后端移植到sqlite后端 . 我在这个项目中使用过rowCount() .
在我原来的Mysql应用程序中,我这样做了:
$stmt = $db->query("SELECT id FROM table where id = $id ");
$rc = $stmt->rowCount();
if ($rc == 1) {
// do something
}
文档说这个方法仅用于从UPDATE,INSERT,DELETE查询返回受影响的行,使用PDO_MYSQL驱动程序(仅限此驱动程序),您可以获取SELECT查询的行计数 .
那么,如何用sqlite后端实现同样的目标呢?
这就是我最终做到的方式:
$stmt = $db->query("SELECT count(id) as cnt FROM table where id = $id ");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
if ($row['cnt'] == "1") {
// do something
} else {
return false;
}
}
}
我正在寻找一个更优雅的解决方案,同时实现与rowCount()相同的功能 .
1 回答
这是在pdo中这样做的方法:
(同样的方式XD)
顺便说一下,我不建议做类似的事情
在这样的语句中包含变量并不好 . 使用类似的东西:
这是我正在使用的一些代码的一部分:
编辑:(出于兼容性问题)