2010-05-18 71 views
0

雖然以下symfony的教程(1.4.4),我得到一個錯誤與ODBC/MSSQL 2008如何用symfony/doctrine和odbc解決問題?

SQLSTATE [07002]:COUNT場不正確:0 [微軟] [SQL Server的 本機客戶端10.0 ] COUNT字段不正確或語法錯誤 (SQLExecute [0] at ext \ pdo_odbc \ odbc_stmt.c:254)。失敗查詢: 「SELECT [j]。[id] AS [j__id],[j]。[category_id] AS [j__category_id], [j]。[type] AS [j__type],[j]。[company] AS [j__company],[j]。[logo] AS [j__logo],[j]。[url] AS [j__url],[j]。[position] AS [j__position], [j] AS [j__location],[j]。[description] AS [j__description],[j]。[how_to_apply] AS [j__how_to_apply],[j]。[token] AS [j__token],[j]。[is_public] AS [j__is_public],[j]。[is_activated] AS [j__is_activated],[j]。[email] AS [j__email],[j]。[expires_at] AS [j__expires_at],[j]。[created_at] AS [j__created_at],[j]。[updated_at] AS [j__updated_at] FROM [jobeet_job] [j] WHERE([j]。[category_id] = '2'AND [j]。[expires_at]>?)ORDER BY [j]。[expires_at] DE SC」

我已經縮小的問題,使用參數 public function getActiveJobs(Doctrine_Query $q = null) { if (is_null($q)) { $q = Doctrine_Query::create() ->from('JobeetJob j'); }

//$q->andWhere('j.expires_at > \''.date('Y-m-d H:i:s', time()).'\'');<-- this works 
    $q->andWhere('j.expires_at > ?', date('Y-m-d H:i:s', time())); //<-- this line has problem 
    $q->addOrderBy('j.expires_at DESC'); 

    return $q->execute(); 
} 

任何人都可以點我在正確的方向上線? 謝謝。

+0

當你像第一行一樣用撇號括起'date()'函數時,它會起作用嗎? – Alec 2010-05-18 23:38:37

+0

是的,它的工作原理是這樣的,但它不會淨化數據庫輸入 – JaSk 2010-05-18 23:45:25

回答

0

我「解決它」更改爲

$q->andWhere('j.expires_at >=?', date('Y-m-d H:i:s' time()));

它是一個臨時的解決方案,現在工作,是的,但我想知道爲什麼它不工作只用了>。 謝謝

+0

如果有任何興趣,我可以毫無問題地使用以下(MySQL):$ q-> andWhere('date_created>?', date('Ym-d',strtotime('30 days ago')));奇怪的問題。 – Tom 2010-05-19 04:08:59