Php CodeIgniter MySQL查询不返回任何数据,即使肯定有数据要返回!

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

我使用此函数和ActiveRecord设置了CI模型:

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:)