2011-06-17 60 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并尝试在数据库中运行它。