【发布时间】:2018-07-15 19:28:51
【问题描述】:
A 已经将一些应用程序从 CakePHP 2 改写为 CakePHP 3。我在数据库中有一些结构,列有:key(自动生成的密钥字符串)。在 mysql 中,键是一个关键字,所以当我编写 SQL 查询时,我必须将其转义为
INSERT INTO table (`key`) VALUES (....)
不幸的是,当我尝试保存实体时,我收到一个错误:
[42000][1064] You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'key,
该错误是在 Cake\ORM\Table 中的 _insert() 方法中触发的:
$statement = $this->query()->insert(array_keys($data))
->values($data)
->execute();
有什么建议可以避免这种情况吗? CakePHP 3.5.11 版
【问题讨论】:
-
你的mariadb好像有问题,可能需要去掉括号。
-
好的,我用谷歌搜索得更深入,我发现问题是:
quoteIdentifiers数据库配置中的参数。它应该设置为true。
标签: sql cakephp cakephp-3.x quoting reserved-words