SQLSTATE[42000]: Syntax error or access violation: 1064

219
13 ноября 2017, 22:01

An exception occurred while executing 'INSERT INTO Answer (name_of_answ, right, Question_id) VALUES (?, ?, ?)' with params ["ок", 1, 133]:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'right, Question_id) VALUES ('ок', 1, 133)' at line 1

Перечитал много форумов и везде пишут, чтоб при такой ошибке ставили скобки и всё будет окей, но запрос-то генерирую не я. Вот мои сущности

Answer:

namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Table(name="Answer")
 * @ORM\Entity()
 */
class Answer
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;
    /**
     * @ORM\Column(type="string", length=50)
     */
    private $nameOfAnsw;
    /**
     * @ORM\Column(type="boolean")
     */
    private $right;
    /**
     *
     * @ORM\ManyToOne(targetEntity="Question",inversedBy="QuizQuestions")
     * @ORM\JoinColumn(name="Question_id", referencedColumnName="id", onDelete="cascade")
     */
    private $idQuestion;
    public function getId(): int
    {
        return $this->id;
    }
    public function setnameOfAnsw(string $nameOfAnswer)
    {
        $this->nameOfAnsw=$nameOfAnswer;
    }
    public function getnameOfAnsw()
    {
        return $this->nameOfAnsw;
    }
    public function setRight(bool $right)
    {
        $this->right=$right;
    }
    public function getRight()
    {
        return $this->right;
    }
    public function setIdQuestion( $idQuestion)
    {
        $this->idQuestion=$idQuestion;
    }
    public function getQuestion_id()
    {
        return $this->idQuestion;
    }
}

Question:

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
 * @ORM\Table(name="Question")
 * @ORM\Entity()
 */
class Question implements \Serializable
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $Id;
    /**
     * @ORM\Column(type="string", length=60, unique=false)
     */
    private $name_of_question;
    public function getId():int
    {
        return $this->Id;
    }
    public function setNameOfQuestions(string $nameOfQuestion)
    {
        $this->name_of_question=$nameOfQuestion;
    }
    public function getname_of_question()
    {
        return $this->name_of_question;
    }
    /** @see \Serializable::serialize() */
    public function serialize()
    {
        return serialize(array(
            $this->Id,
            $this->name_of_question,
        ));
    }
    /** @see \Serializable::unserialize() */
    public function unserialize($serialized)
    {
        list (
            $this->Id,
            $this->name_of_question,
            ) = unserialize($serialized);
    }
}

И вот собственно сам контролер

 /**
     * @Route("/admin/questionedit/add", name="/admin/questionedit/add")
     * @Method("GET")
     */
    public function AddAction()
    {
        $em = $this->getDoctrine()->getManager();
        $question= new Question();
        $question->setNameOfQuestions($_GET['questions']);
        $em->persist($question);
        $em->flush();
        $true=true;
        $false=false;
        $answer1 = new Answer();
        $answer1->setnameOfAnsw($_GET['answer1']);
        if ($_GET['trueAnswer']=="1")
        {
            $answer1->setRight('true');
        }else
        {
            $answer1->setRight('false');
        }
        $answer1->setIdQuestion($question);
        $em->persist($answer1);
        $answer2 = new Answer();
        $answer2->setnameOfAnsw($_GET['answer2']);
        if ($_GET['trueAnswer']=="2")
        {
            $answer2->setRight("$true");
        }else
        {
            $answer2->setRight("$false");
        }
        $answer2->setIdQuestion($question);
        $em->persist($answer2);
        $answer3 = new Answer();
        $answer3->setnameOfAnsw($_GET['answer3']);
        if ($_GET['trueAnswer']=="3")
        {
            $answer3->setRight("true");
        }else
        {
            $answer3->setRight("$false");
        }
        $answer3->setIdQuestion($question);
        $em->persist($answer3);

        $answer4 = new Answer();
        $answer4->setnameOfAnsw($_GET['answer4']);
        if ($_GET['trueAnswer']=="4")
        {
            $answer4->setRight("$true");
        }else
        {
            $answer4->setRight("$false");
        }
        $answer4->setIdQuestion($question);
        $em->persist($answer4);
        $em->flush();
        return new Response("Hello");
    }

Заранее извиняюсь за ужасно некрасивый код. Параметры все передаёт верные. Все геты рабочие. И вот такой запрос генерит

INSERT INTO Answer (name_of_answ, right, Question_id) VALUES (?, ?, ?)' with params ["\u043e\u043a", 1, 133]

READ ALSO
Что не так с запросом?

Что не так с запросом?

Хочу сделать возможным редактирование конкретной статьи, а не всех имеющихся, не могу построить правильный запрос:

195
Как вывести циклом поля из вкладок

Как вывести циклом поля из вкладок

Проблема следующая: Пытаюсь вывести значения кастомных полей размещенных во вкладках, например: вкладка 1, вкладка 2, и тд

197
Отправка значений и файлов через php ajax

Отправка значений и файлов через php ajax

Видел подобные вопросы но там идет отправка Только файла, а не как у меня Файл + строковые данные формыСобственно сам вопрос есть форма приводить...

223