我有这个错误500 |内部服务器错误| Doctrine_Connection_Mysql_Exception

时间:2013-11-11 05:51:34

标签: php doctrine symfony-1.4

当我更新我的表格时,我收到了这个错误 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);
        }
    }
}

这是我的编辑操作代码。那是什么意思错误。我的错是什么 我该怎么做才能解决这个错误? 请帮帮我

1 个答案:

答案 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,因为它会自动为您创建唯一的文件名。