2

特定のクエリの合計行数を取得し、クエリ結果を 10 行に制限する方法。例えば。サンプルというテーブルがあります。400行あります。where name = "%Sam%" のようなクエリを実行すると、213 行が返されます。今、最初の 10 行だけを取得して結果をユーザーに表示していますが、合計行が返される必要があります。コードイグナイターでどのように行う必要がありますか?

SELECT
        SQL_CALC_FOUND_ROWS *
FROM
        sample
WHERE
        name like "%sam%"

このような?総数を取得する方法は?

4

2 に答える 2

1

の結果を取得するには、2 番目のクエリを実行する必要がありますSQL_CALC_FOUND_ROWS

SELECT FOUND_ROWS()

を使用して見つかった値を返しますSQL_CALC_FOUND_ROWS。ただし、エイリアスを使用すると結果を取得するのが簡単になる場合があります。

SELECT FOUND_ROWS() AS num_results
于 2013-06-14T12:58:32.207 に答える
0

2 つのクエリを使用してカウントを取得し、もう 1 つを使用して限定された結果を返すことができます。

モデルのように、カウント変数のみを返す関数を作成します

ページ分割された結果を生成する 2 つ目の関数を作成します。

例えば..

public function count($where){
        $query = $this->db->query("select count(id) as count from clients $where");
        return $query->row('count');
        }
}

public function limit($sidx,$sord,$start,$limit,$where){
        $query = $this->db->query("select * from clients $where ORDER BY $sidx $sord LIMIT $start , $limit");
        if ($query->num_rows() > 0){
            return $query->result_array();
        }
}

そして、ここにコントローラーコードがあります

$where = // 計算

$count = count($this->model->count($where));

        if( $count > 0 ) { $total_pages = ceil($count/$limit); } else { $total_pages = 0; }

        if ($page > $total_pages) $page = $total_pages; 


        $start = $limit * $page - $limit;


        $users = $this->model->limit($sidx,$sord,$start,$limit,$where);

...................

于 2013-06-14T13:15:12.007 に答える