首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误更新实体- Symfony 3

错误更新实体- Symfony 3
EN

Stack Overflow用户
提问于 2017-09-01 22:34:39
回答 1查看 196关注 0票数 0

Doctrine/MySQL有一些非常不对劲的地方,否则我就是完全愚蠢。我试图对问题实体执行一个简单的更新查询:

代码语言:javascript
复制
+---------------+--------------+------+-----+---------+----------------+
| 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    |                |
+---------------+--------------+------+-----+---------+----------------+

通过以下方式:

代码语言:javascript
复制
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)     
    ;         
}

代码语言:javascript
复制
...
$em->persist($question);
...

我得到了一个错误:

PHP异常原则\DBAL\ Exception \SyntaxErrorException:“使用params 1、12执行'UPDATE问题集顺序=?WHERE id = ?‘时出现异常。

所有其他字段都是没有问题的!

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

代码语言:javascript
复制
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中运行相同的查询时,一切正常:

代码语言:javascript
复制
UPDATE `questions` SET `order`='2' WHERE `id`='7';

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

代码语言:javascript
复制
update questions set form_id=5 where id=7;

跟预期的一样。

怎么一回事?

编辑:为了简化,为什么这样做:

代码语言:javascript
复制
UPDATE questions SET form_id=5 WHERE id=7;

但这并不是:

代码语言:javascript
复制
UPDATE questions SET order=3 WHERE id=7;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-01 22:47:48

order是Mysql的保留字。

这就是为什么当(用背板逃跑)时它会运行的原因。

不用说,选择另一个名字更安全。

更多信息请参见this answer

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46008749

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档