2016-10-30 2 views
0

Ich erhalte die Fehlermeldung "SQLSTATE [HY093]: Ungültige Parameternummer", wenn ich versuche, die unten Funktion auszuführen:SQLSTATE [HY093]: Ungültige Parameternummer: Es wurden keine Parameter gebunden

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

Mein CommentTye Form:

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

Wenn ich es laufen, bekomme ich

Message: An exception occurred while executing 'INSERT INTO comment (content, created_at, post_id, user_id) VALUES (?, ?, ?, ?)': 

SQLSTATE [HY093]: Ungültige Parameternummer: keine Parameter waren b ound

Bitte helfen Sie mir dieses Problem beheben

+0

bitte den Code-Block in Ihrer Frage (Verwendung 4-Raum-Einzug für Code) fixieren - es ist so nicht lesbar. – nifr

+0

Es tut mir leid, das war mein erster Beitrag. – Aga95

+0

Versuchen Sie '$ em-> flush()' ohne Parameter aufzurufen. Eigentlich ist der erste und einzige Parameter '$ entity', Sie sollten dort keinen 'Erfolg' angeben. –

Antwort

0

Sie gemischt haben bündig ing Ihre Entity-Manager und das Hinzufügen einer Flash- Nachricht.

Statt:

$em->flush('success', 'Komentarz został pomyślnie dodany'); 
$this->addFlash(); 

Sie wollen:

$em->flush(); 
$this->addFlash('success'); 
$this->addFlash('Komentarz został pomyślnie dodany'); 
+0

Danke! Es klappt! – Aga95

+0

Ich bin in der gleichen exakten Situation: Können Sie erklären, warum das Mischen von Flash-Nachrichten mit Löschoperationen diese Ausnahme verursacht? Weil ich das mache, um eine Datenbankversion der Nachricht zu speichern und sie sofort nach dem Neuladen der Seite anzuzeigen. Ich würde gerne den Grund wissen. Vielen Dank! – Aerendir

+0

Wenn Flash-Nachrichten in der Sitzung gespeichert werden und die 'Flush'-Operation auf Datenbank funktioniert, was ist die Beziehung zwischen den beiden? – Aerendir

Verwandte Themen