0

当我更新我的表格时,我收到了这个错误 500 | 内部服务器错误 | Doctrine_Connection_Mysql_Exception

执行编辑

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);
        }
    }
}

这是我的编辑操作代码。所以什么是精确错误。我的错误是什么,我能做些什么来解决这个错误?请帮我

4

1 回答 1

0

为什么要为要保存的值添加引号?Doctrine 会为你处理这件事。尝试删除这部分:

$name="'".$this->form->getValue('username')."'";
$message="'".$this->form->getValue('message')."'";
$email="'".$this->form->getValue('email')."'";
$sub="'".$this->form->getValue('subject')."'";

你没有充分利用教义和形式的力量。

例如,而不是这个:

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

于 2013-11-12T09:33:41.510 回答