1
我有一個CI模型建立與此功能和ActiveRecord的:CodeIgniter MySQL Query不返回任何數據,即使肯定有數據要返回!
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%的信心,將運行此查詢:當我把通過phpMyAdmin的或純查詢
SELECT *, TO_DAYS(closingdate) - TO_DAYS(CURDATE()) AS days
FROM challenges
WHERE closingdate > CURDATE()
ORDER BY days ASC
Sequel Pro,它從數據庫返回5行 - 如預期的那樣。然而,當我在challenges
控制器調用下面的代碼:
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 } ?>
......沒有什麼是輸出!
這是混淆了我,因爲我很肯定我已經有了一個有效的查詢,還我有兩個其他型號功能 - get_ended_competitions
和get_voting_competitions
- 我使用這一起其中做工精細兩者。代碼絕對沒有什麼不同。
我在做什麼錯? :S
謝謝!
傑克
編輯:沒有寫入要麼笨日誌或者PHP的錯誤日誌。
謝謝你提醒我關於探查。只需通過數據庫運行查詢 - 問題是,ActiveRecord將CURDATE()放在引號內,因此將其視爲文本而不是MySQL函數!你知道解決這個問題的方法嗎? – Jack 2010-07-12 09:36:32
明白了。 '$ this-> db-> where()'的第三個參數設置爲FALSE時,不會添加反引號。謝謝波格丹! – Jack 2010-07-12 09:38:07
是的,CI的Active Record逃生機制有時候真的是PIA :) – Bogdan 2010-07-12 10:02:59