2011-06-17 62 views
0

我在用cakePHP保存數據時遇到了一個奇怪的問題。我會一邊解釋一邊解釋。用cakePHP保存數據時出現問題

這是控制器頭部以防萬一其有用:

var $helpers = array('Html','Form','Js','Ajax'); 
    var $components = array('RequestHandler'); 
    var $name = 'Parts'; 
    var $paginate = array(
         'limit'=>25, 
         'order'=>array('Part.customer'=>'asc') 
         ); 

這是我的用於保存形式數據控制器代碼:

//list items for table 
    $parts = $this->Paginate('Part'); 
    $this->set('parts',$parts); ] 

//save data 
if(!empty($this->data)){  
     if ($this->Part->save($this->data)) { 
      $this->Session->setFlash('Part added to database.','default',array('class'=>'flash-success'));    
      $this->redirect(array('action' => 'index'));   
     }else{ 
      $this->Session->setFlash('Failed to add part to database, please try again.','default',array('class'=>'flash-failure'));    
      $this->redirect(array('action' => 'index'));   
     } 
    } 

這是我在視圖形式:

 echo $this->Form->create('Part'); 
     echo $this->Form->input('customer'); 
     echo $this->Form->input('part_number'); 
     echo $this->Form->input('foil'); 
     echo $this->Form->input('base'); 
     echo $this->Form->input('base_color'); 
     echo $this->Form->input('description',array('cols'=>21)); 
     echo $this->Form->input('moulding'); 
     echo $this->Form->input('foil_diameter'); 
     echo $this->Form->input('tool'); 
     echo $this->Form->input('impressions'); 
     echo $this->Form->input('spray_jig'); 
     echo $this->Form->input('prep'); 
     echo $this->Form->input('pack'); 
     echo $this->Form->end('Add Part'); 

現在,如果我將信息輸入到包含spray_jig的表格中並且包含spray_jig,那麼將會保存數據將被保存。如果我在spray_jig之前填寫表單,表單將不會提交。我還沒有進行任何數據驗證,並且這些字段是VARCHAR的INT和一個TEXT的混合。

這讓我感到莫名其妙,你能否提出問題和/或排除故障的好方法?

注: spray_jig是標準的int(11)字段。

+1

數據庫允許spray_jig上的空值嗎? – Nightwolf 2011-06-17 13:52:38

回答

0

我發現解決方案 - 它看起來INT字段不能有空值。一旦輸入所有INT字段,表單提交。

0

我的建議是將應用程序更改爲調試模式,並查看它正在運行的sql,然後複製sql並嘗試在數據庫中運行它。