使用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(*)獲取總條數的。
