mysql - 更新实体时出错 - Symfony 3

标签 mysql symfony doctrine

Doctrine/MySQL 有一些非常非常错误的东西,或者我只是完全愚蠢。我正在尝试对问题实体执行简单的更新查询:

+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| form_id       | int(11)      | YES  | MUL | NULL    |                |
| name          | varchar(255) | NO   |     | NULL    |                |
| question_type | varchar(255) | NO   |     | NULL    |                |
| validation    | longtext     | YES  |     | NULL    |                |
| required      | tinyint(1)   | YES  |     | NULL    |                |
| order         | int(11)      | NO   |     | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+

与:

public function buildForm(FormBuilderInterface $builder, array $options) {
    $builder
        ->add('order', IntegerType::class)    
        ->add('name', TextType::class)
        ->add('questionType', TextType::class)
        ->add('validation', TextType::class)
        ->add('required', CheckboxType::class)     
    ;         
}

...
$em->persist($question);
...

我收到此错误:

未捕获的 PHP 异常 Doctrine\DBAL\Exception\SyntaxErrorException:“执行‘UPDATE questions SET order = ? WHERE id = ?’时发生异常参数为 [1, 12]

所有其他字段都验证没有问题!

当我尝试在控制台中运行相同的查询时,结果如下:

mysql> UPDATE questions SET order=1 WHERE id=14;
ERROR 1064 (42000): 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 'order=1 WHERE id=14' at line 1

当我在 Workbench 中运行相同的查询时,一切正常:

UPDATE `questions` SET `order`='2' WHERE `id`='7';

最后,更新此表中的另一列(也是整数!),如下所示:

update questions set form_id=5 where id=7;

按预期进行。

这是怎么回事?

编辑: 简单来说,为什么这样有效:

UPDATE questions SET form_id=5 WHERE id=7;

这不会:

UPDATE questions SET order=3 WHERE id=7;

最佳答案

order是Mysql的保留字
这就是为什么它在(用反引号转义)
时运行 不用说,选择另一个名字会更安全
请参阅this answer了解更多信息

关于mysql - 更新实体时出错 - Symfony 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46008749/

相关文章:

excel - 从 Excel 插入/更新 Doctrine 对象

mysql - Linux Tomcat MySQL 连接失败

mysql - 将 ORDER BY 添加到 LEFT OUTER JOIN

mysql - 如何让mysql master只写,slave只读

php - 使用php将表单中的数据填充到数据库中

symfony - 在 symfony 中将相关实体属性值显示为表单标签

php - 未捕获的 PHP 异常 Doctrine\ORM\ORMException : "Unknown Entity namespace alias ' AppBundle'.“

mongodb - 如何在 Doctrine MongoDB 中使用 QueryBuilderAPI 通过多个条件查找一个字段的文档?

symfony - 在 Twig 模板中嵌入服务

php - 按降序对表记录进行排序 - symfony