Php CodeIgniter MySQL查询不返回任何数据,即使肯定有数据要返回!
我使用此函数和ActiveRecord设置了CI模型:Php CodeIgniter MySQL查询不返回任何数据,即使肯定有数据要返回!,php,mysql,activerecord,codeigniter,Php,Mysql,Activerecord,Codeigniter,我使用此函数和ActiveRecord设置了CI模型: function get_open_competitions() { $this->db->select('*, TO_DAYS(closingdate) - TO_DAYS(CURDATE()) AS days') ->from('challenges') ->whe
function get_open_competitions()
{
$this->db->select('*, TO_DAYS(closingdate) - TO_DAYS(CURDATE()) AS days')
->from('challenges')
->where('closingdate >','CURDATE()')
->order_by('days','asc');
$query = $this->db->get();
return $query;
}
我有99.9%的信心运行此查询:
SELECT *, TO_DAYS(closingdate) - TO_DAYS(CURDATE()) AS days
FROM challenges
WHERE closingdate > CURDATE()
ORDER BY days ASC
当我通过phpMyAdmin或Sequel Pro进行普通查询时,它会从数据库中返回5行(如预期的那样)。但是,当我调用挑战控制器时,会返回以下代码:
function index()
{
// Fetch the Open for Entry competitions
$data['open'] = $this->cm->get_open_competitions();
// Fetch the Open for Voting competitions
$data['voting'] = $this->cm->get_voting_competitions();
// Fetch the Ended Competitions
$data['ended'] = $this->cm->get_ended_competitions();
$data['colwide'] = 'challenges/challengeshome';
$this->load->view('templatewide',$data);
}
。。。然后在视图文件中这样调用它
<h2>Open for Entry</h2>
<hr/>
<?php foreach ($open->result() as $row) { ?>
<h3>
<?php echo anchor('challenges/view/'.$row->id, $row->title);?> -
<i>Challenge ends and voting begins in <?php echo $row->days;?> days</i>
</h3>
<h4> <?php echo $row->description;?> </h4>
<?php } ?>
openforentry
-
挑战结束,投票在几天后开始
。。。没有输出强>
这让我很困惑,因为我非常确定我得到了一个有效的查询,而且我还有另外两个模型函数-get\u ended\u competitions
和get\u voting\u competitions
——这两个函数我都在使用,它们都很好地工作。代码绝对没有什么不同
我做错了什么?!:
谢谢
杰克
编辑:没有任何内容写入CodeIgniter日志或PHP的错误日志。在其他任何内容之前,请在控制器构造函数中启用探查器:
$this->output->enable_profiler(true);
这样,您将确切地看到生成了哪些查询
乐:还有,别忘了$this->db->last_query()代码>;) 谢谢你提醒我关于剖析器的事。刚刚通过DB运行了它的查询-问题是,ActiveRecord在CURDATE()周围加了引号,所以它被视为文本而不是MySQL函数!你知道有什么办法可以避开吗?明白了$this->db->where()
的第三个参数设置为FALSE时,不会添加反勾号。谢谢博格丹!是的,CI的活动记录逃逸机制有时真的是一个PIA:)