【发布时间】:2016-10-30 15:06:57
【问题描述】:
我在尝试运行以下函数时收到错误“SQLSTATE[HY093]: Invalid parameter number”:
public function showAction(Post $post, Request $request){
$comment = new Comment();
$comment->setPost($post);
//comment->setUser($user);
$form = $this->createForm(CommentType::class, $comment); /*obiekt formularza */
$form->handleRequest($request);
if($form->isValid()){
$em = $this->getDoctrine()->getManager();
$em->persist($comment);
$em->flush('success', 'Komentarz został pomyślnie dodany');
$this->addFlash();
return $this->redirectToRoute('post_show', array('id' =>$post->getId()));
}
return $this->render('default/show.html.twig', array(
'post' => $post,
'form' => $form->createView()
));
}
我的 CommentTye 表单:
class CommentType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('content', \Symfony\Component\Form\Extension\Core\Type\TextareaType::class, array(
'label' => false,
'attr' => array('placeholder' => 'Treść komentarza')
))
->add('createdAt')
->add('post')
->add('user')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\Comment'
));
}
/**
* @return string
*/
public function getName()
{
return 'appbundle_comment';
}
}
当我运行它时,我得到了
Message: An exception occurred while executing 'INSERT INTO comment (content, created_at, post_id, user_id) VALUES (?, ?, ?, ?)':
SQLSTATE[HY093]:参数号无效:没有绑定参数
请帮我解决这个问题
【问题讨论】:
-
请修复您的问题中的代码块(代码使用 4 空格缩进)- 这样不可读。
-
对不起,这是我的第一篇文章。
-
尝试不带参数调用
$em->flush()。实际上第一个也是唯一的参数是$entity,你不应该在那里提供“成功”。 -
它不起作用。我收到新消息:警告:缺少 Symfony\Bundle\FrameworkBundle\Controller\Controller::addFlash() 的参数 1,在 C:\xampp\htdocs\sfBlog\sfBlog\src\AppBundle\Controller\DefaultController.php 中调用第 76 行并定义(第 76 行是 $this->addFlash(); )
-
从
$em->flush()中删除两个字符串,并将它们添加到$this->addFlash('success', 'Komentarz został pomyślnie dodany')