Php 关于CI活动记录类用法的SQL问题

Php 关于CI活动记录类用法的SQL问题,php,codeigniter,activerecord,php-5.3,Php,Codeigniter,Activerecord,Php 5.3,我正在使用CodeIgniter活动记录类生成表,下面是我的代码片段 我尝试从数据库表上生成两个表; 以及两个名为Table_2010和Table_2011的HTML表 /////////////////// YEAR 2010 //////////////// // It works quite well to generate 2010 result table. $this->db->select('year, distance, gender, rank, name, ch

我正在使用CodeIgniter活动记录类生成表,下面是我的代码片段

我尝试从数据库表上生成两个表; 以及两个名为Table_2010和Table_2011的HTML表

/////////////////// YEAR 2010 ////////////////
// It works quite well to generate 2010 result table.

$this->db->select('year, distance, gender, rank, name, chiptime, racenumber');

                $this->db->order_by("year", "desc");

                $this->db->order_by("distance, gender, rank", "asc");

                $topNum = 5;
                $year = 2010;                   
                $array = array('rank <=' => $topNum, 'year' => $year);
                $this->db->where($array); 


                $this->load->model('eventmain_model');

                $data['results_2010'] = $this->eventmain_model->get_result_top5($city);

                $tmpl =  $this->common_model->html_table_config(); 

                $this->load->library('table');

                $this->table->set_template($tmpl);

                $this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'ChipTime', 'RaceNo'));



/////////////////// YEAR 2011 ////////////////
// I need query several different fields from the same data base table.
// such as I query 'lap', otherwise 'chiptime'
// It doesn't work well, since it always included 2010 and 2011 data to my 2nd 2011 new table. 
// I want to remove 2010 rows from the 2011 table. How can I fix this?
// Is ther an method to new the db select object and generate my 2011 table?      
//Thanks.                   
                // load database class

                $this->db->select('year, distance, gender, rank, name, lap, racenumber');

                $this->db->order_by("year", "desc");

                $this->db->order_by("distance, gender, rank", "asc");

                $topNum = 5;
                $year = 2011;
                $this->db->where('rank <=', $topNum);
                $this->db->where('year', $year);



                $this->load->model('eventmain_model');

                $data['results_2011'] = $this->eventmain_model->get_result_top5($city);

                $tmpl =  $this->common_model->html_table_config(); 

                $this->load->library('table');

                $this->table->set_template($tmpl);

                $this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'Lap', 'RaceNo'));
//2010年////////////////
//它可以很好地生成2010结果表。
$this->db->select('year,distance,gender,rank,name,chiptime,racenumber');
$this->db->order_by(“年”、“描述”);
$this->db->order_by(“距离、性别、等级”、“asc”);
$topNum=5;
$year=2010年;
$array=array('rank db->select('year,distance,gender,rank,name,lap,racenumber');
$this->db->order_by(“年”、“描述”);
$this->db->order_by(“距离、性别、等级”、“asc”);
$topNum=5;
$year=2011年;

$this->db->where('rank从CI官方论坛获得答案

$this->table->clear();
我通过将代码添加到我的查看页面解决了这个问题。谢谢

echo 'Table_2010<br>';

$this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'ChipTime', 'RaceNo')); 

echo $this->table->generate($results_2010);
$this->table->clear();

echo '<br>';
echo 'Table_2011<br>';
$this->table->set_heading(array('Year', 'Dis', 'gender','Rank', 'Name', 'Lap', 'RaceNo'));
echo $this->table->generate($results_2011);
echo“Table_2010
”; $this->table->set_标题(数组('Year','Dis','gender','Rank','Name','ChipTime','RaceNo'); echo$this->table->generate($results\u 2010); $this->table->clear(); 回声“
”; echo“Table_2011
”; $this->table->set_标题(数组('Year','Dis','gender','Rank','Name','Lap','RaceNo'); echo$this->table->generate($results\u 2011);
我有点困惑:在这两种情况下,您实际在哪里执行查询?我没有看到get(),因此从技术上讲,您似乎已经构建了一个大规模查询,而从未调用过它。有另一个模型文件(
get\u result\u top5()
)来执行查询操作。它工作得非常好。我发布了
$this->db->select();
$this->db->where()
仅部分。我假设这部分代码需要修复。感谢您的澄清。不幸的是,我和您一样感到困惑;我不知道您如何在第二次查询中将2011年限制为2011年时获得2011年和2010年的数据。我在这一点上也非常奇怪。实际上,我的源代码中已经将2011年限制为2011年。我假设$t他的->数据库->何处();当我试图生成我的表_2011时,不会再次初始化。它在对象中存储了2010年的信息。是否可能?如何在同一模型文件中的另一个查询之前初始化活动记录类?谢谢。我通常在模型中有所有数据库交互,不依赖其他对象来完成活动记录查询。不是吗他给我的唯一建议是把所有东西移到一个地方,看看会发生什么。你的
$this->eventmain\u model->get\u result\u top5()
可能没有错,但我会测试以确保它不会引起问题。