2011-02-08 2 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는 null입니다. 내가 뭔가 잘못하고 있는거야? 내가 말한 것으로부터 문제를 결정하는 것이 쉽지 않을 수도 있지만 적어도 어떻게 이것을 디버깅 할 수 있을지 제안 할 수있을 것입니다. 미리 감사드립니다

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

+1

는 : 어떤 문제를 게시하시기 바랍니다 실제로 * was *. 이것은 미래의 사용자를 도울 것입니다. –

답변

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); 
+0

감사합니다. 약간의 인터넷 검색으로 $ db = $ this-> getDbTable() -> getAdapter(); 왜냐하면 Zend_Db_Table에는 getProfiler() 메소드가 없기 때문입니다. 어쨌든 일단 내가 그것을 얻은 쿼리 프로파일 러를 확인한 것 같습니다 : ( – Sejanus

+1

. 날짜 또는 텍스트 열 datetime 열 편집 시도 했습니까? 실제로 데이터를 삽입하려고합니다. 마지막으로 측정, 당신은 손으로 그것을 삽입 할 수 있습니다,하지만 그것은 실제로 해결책은 아닙니다 : date ("Ymd H : i : s")' –