2011-02-28 173 views
0

我正在查詢數據庫以返回一個簡單的數組。 IE:「SELECT * FROM contacts LIMIT 50」PHP MySQL計數結果和如果這是所有的結果

但我想弄明白,如果用戶只有10個聯繫人。我想顯示一個回覆(10/10)聯繫人顯示。

我知道我可以在數據庫上運行2個查詢, a。 SELECT * FROM聯繫人(然後計算結果) b。 SELECT * FROM contacts(然後找到A和B的區別)

但問題出在用戶有2000個聯繫人時並不少見,然後每次用戶選擇「聯繫人」頁面時查詢數據庫。

那麼,有沒有一個簡單的方法來做到這一點?還是我在正確的軌道上?

任何光線,將不勝感激。 乾杯。

+1

賈斯汀,我認爲這個話題有你需要的答案:http://stackoverflow.com/questions/818567/mysql-pagination-without-double-querying。您要查找的搜索詞是「MySQL分頁」。 – Greg 2011-02-28 00:59:00

+0

謝謝格雷格,這似乎是正確的解決方案。 – Justin 2011-02-28 01:04:17

回答

1

另一種方法

select *, 
    (select count(*) from table) as `found`, 
    (select 10 - count(*) from table) as missing 
from table limit 10 
1

您可以運行SELECT COUNT(*) FROM contacts得到的總數contact。另一種解決方案 -

SELECT SQL_CALC_FOUND_ROWS * from contacts limit 50;// get up to 50 records 
SELECT FOUND_ROWS(); // returns the number of rows in contact 
0

嗨,你可以查詢「選擇*從聯繫人」,然後顯示記錄取決於你的頁面限制(例如。 50)。所以你也有全部記錄。

OR

,你可以做以下讓你的表

SELECT COUNT(*) FROM CONTACTS 

記錄數爲您查詢後 「SELECT * FROM接觸限量50」

問候