[英]Get total rows count of table
我想讓所有行數都在我的sql中。
表格的前2列如下所示
我的功能看起來像這樣
$limit=2;
$sql = "SELECT id,COUNT(*),dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
$stmt = $this->db->prepare($sql);
$stmt->execute();
$stmt->bind_result($id, $total, $datetime, $title, $content);
$stmt->store_result();
$count = $stmt->num_rows;
if ($count > 0) {
while ($stmt->fetch()) {
內循環中,我得到$total
確切值,但MySQL只選擇1行-id為1的行。( $count
也為1)
試過這個SQL
SELECT id,dt,title,content FROM news ORDER BY dt DESC LIMIT 2
一切順利。
為什么在第一種情況下它僅選擇1行? 如何解決此問題?
前表我有5行。 我想使用所有字段獲取其中的2個,並通過一個查詢獲取所有行數(在這種情況下為5)。
如果要使用COUNT(*)
請嘗試添加GROUP BY dt
COUNT(*)
盡管不確定為什么要使用它)。
編輯
很好,如果您堅持要在一個電話中這樣做,請按以下步驟操作:
$sql = "SELECT id,(SELECT COUNT(id) FROM news) as total,dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
刪除COUNT(*)。 如果您只保留其中一行,則只會得到1行。
這可能是由於變量$ limit設置為1或未設置,而mysql默認為1引起的。嘗試將第一行更改為
$sql = "SELECT id,COUNT(*),dt,title,content FROM news ORDER BY dt DESC";
編輯
改成:
$sql = "SELECT SQL_CALC_FOUND_ROWS,id,dt,title,content FROM news ORDER BY dt DESC LIMIT " . $limit;
然后使用第二個查詢
SELECT FOUND_ROWS( )
獲取與查詢匹配的行數
這完全是硬件問題的根源……為什么除了教授的遲鈍方法之外,為一個簡單的問題增加復雜性,您又不想運行兩個查詢?
無論如何....在這里:
SELECT id, (SELECT COUNT(*) FROM news) AS row_count, dt, title, content FROM news ORDER BY dt DESC LIMIT
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.