使用pdo方式操作数据库已经有一年多了,以前一直是用的sqlite感觉有好多东西sqlite都不支持,比如last_insert_id,返回最后插入的id,mysql可以,sqlite不可以。不过pdo操作数据库sqlite和mysql是基本一致的(这也是pdo被广为推广的原因之一吧)
一直以来比较纠结的就是如何获取行数的问题。1,以前一直用的是比较笨的方法,每次都是获取所有结果,用count计算结果数组元素总数;有时候数据量大会遇到内存耗尽的情况;
2,pdo里有个rowCount函数,这个函数返回的是增删改的影响条数,对查的结果返回的不是很准。
【返回受上一个 SQL 语句影响的行数】是手册里关于rowCount函数的解释
对于大多数数据库, PDOStatement::rowCount() 不能返回受一条 SELECT 语句影响的行数。替代的方法是,使用 PDO::query() 来发出一条和原打算中的SELECT语句有相同条件表达式的 SELECT COUNT(*) 语句,然后用 PDOStatement::fetchColumn() 来取得返回的行数。这样应用程序才能正确执行。
关于select count(*)和select count(id)的执行效率,在网上查了一下,最后得出了select count(*) 快的结论
后来果断就换成了select count(*)获取总条数的。
