当我更新我的表格时,我收到了这个错误 500 |内部服务器错误| Doctrine_Connection_Mysql_Exception
executeEdit
public function executeEdit(sfWebRequest $request)
{
$this->form = new ContactForm();
$this->rs = Doctrine::getTable('login')-> find($request->getParameter('id'));
$id=$request->getParameter('id');
$unm=$this->rs['username'];
$msg=$this->rs['message'];
$em=$this->rs['email'];
$sub=$this->rs['subject'];
$this->form->setDefault('id', $id);
$this->form->setDefault('username', $unm);
$this->form->setDefault('message', $msg);
$this->form->setDefault('email', $em);
$this->form->setDefault('subject', $sub);
//$this->forward404Unless($this->rs);
if ($request->isMethod('post'))
{
$this->form->bind($request->getParameter('contact'), $request->getFiles('contact'));
if ($this->form->isValid())
{
$name="'".$this->form->getValue('username')."'";
$message="'".$this->form->getValue('message')."'";
$email="'".$this->form->getValue('email')."'";
$sub="'".$this->form->getValue('subject')."'";
$id=$this->form->getValue('id');
$file = $this->form->getValue('doc');
$filename = sha1($unm).'_'.sha1($file->getOriginalName());
$extension = $file->getExtension($file->getOriginalExtension());
$path=sfConfig::get('sf_upload_dir').'/'.$filename.$extension;
$qs= Doctrine_Query::create()
->update('login l')
->set('l.username', $name)
->set('l.message', $message)
->set('l.email', $email)
->set('l.subject', $sub)
->set('l.doc', $path)
->where('l.id=?',$id)
->execute();
$this->redirect('user/show?id=' . $id);
}
}
}
这是我的编辑操作代码。那是什么意思错误。我的错是什么 我该怎么做才能解决这个错误? 请帮帮我
答案 0 :(得分:0)
为什么要为保存的值添加引号? Doctrine会为你处理这个问题。尝试删除此部分:
$name="'".$this->form->getValue('username')."'";
$message="'".$this->form->getValue('message')."'";
$email="'".$this->form->getValue('email')."'";
$sub="'".$this->form->getValue('subject')."'";
你没有充分利用Doctrine的力量和形式。
E.g。而不是这个:
$this->form = new ContactForm();
$this->rs = Doctrine::getTable('login')-> find($request->getParameter('id'));
$id=$request->getParameter('id');
$unm=$this->rs['username'];
$msg=$this->rs['message'];
$em=$this->rs['email'];
$sub=$this->rs['subject'];
$this->form->setDefault('id', $id);
$this->form->setDefault('username', $unm);
$this->form->setDefault('message', $msg);
$this->form->setDefault('email', $em);
$this->form->setDefault('subject', $sub);
你可以用这个:
$this->rs = Doctrine_Core::getTable('login')-> find($request->getParameter('id'));
$this->form = new ContactForm($this->rs);
您只需通过添加此功能将表单“连接”到适当的模型:
public function getModelName()
{
return 'login';
}
然后,您可以在表单上使用save
方法,以便自动保存对象,而无需创建更新查询。
另请查看sfValidatorFile
,因为它会自动为您创建唯一的文件名。