2011-02-08 42 views
3

我想簡單的插入:Zend_Db_Expr NOW()不起作用?

$data = array 
(
'whatever' => 'nevermind', 
'etc' => 'more data', 
'updated_on' => new Zend_Db_Expr('NOW()') 
); 

$this->getDbTable()->insert($data); 

一切都被正確地插入,但updated_on爲空。難道我做錯了什麼?我知道從我所說的話來確定問題可能並不容易,但也許你可以建議我至少該如何調試?在此先感謝

p.s.數據庫是mySQL,列是DATETIME,如果我連接到MySQL並手動嘗試插入或更新NOW(),它確實有效。

更新

使用探查,我得到下面的輸出:

INSERT INTO `db_table` (`column1`, `column2`, `column3`, `column4`, `column5`, `column6`, `column_datetime`, `column7`) VALUES (?, ?, ?, ?, ?, ?, NOW(), ?) 

Array 
(
    [1] => column1 data 
    [2] => column2 data 
    [3] => column3 data 
    [4] => column4 data 
    [5] => column5 data 
    [6] => column6 data 
    [7] => column7 data 
) 

據我所知,一切都很好這裏:\

UPDATE2:沒關係,我懂了工作。問題完全不同。

+0

嘗試調試(例如,打印)SQL查詢 – Distdev 2011-02-08 09:58:49

+1

關於您的更新:請郵寄什麼問題其實*是*。這將有助於未來的用戶。 – 2011-02-09 08:38:15

回答

7

僅根據您發佈的代碼,這應該工作。

,因爲它沒有,你應該使用profiler調試查詢

$db = $this->getDbTable(); 
$adapter = $db->getAdapter(); 
$adapter->getProfiler()->setEnabled(true); 
$data = array 
(
    'whatever' => 'nevermind', 
    'etc' => 'more data', 
    'updated_on' => new Zend_Db_Expr('NOW()') 
); 
$db->insert($data); 
print $adapter->getProfiler()->getLastQueryProfile()->getQuery(); 
print_r($adapter->getProfiler()->getLastQueryProfile()->getQueryParams()); 
$adapter->getProfiler()->setEnabled(false);