Php 使用名为“的列名称”;“之前”;与PDO
我正在使用Cakephp 3,我希望在我的模型中有一个名为“before”的专栏 不幸的是,当我尝试创建和保存实体时,出现以下错误: [PDOException]SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行中使用的“before,after,created_at”值(1047,“blabla”,“toto”,“at”)附近的正确语法 我创建此实体的步骤与往常一样: 如果我将我的列“before”重命名为另一个名称,如“toto”,它就工作了。 MYSQL函数“before”存在,所以我想这就是PDO不喜欢它的原因 有没有人有办法继续使用这个名称的列?比如一种逃避函数的方法Php 使用名为“的列名称”;“之前”;与PDO,php,mysql,cakephp,pdo,cakephp-3.0,Php,Mysql,Cakephp,Pdo,Cakephp 3.0,我正在使用Cakephp 3,我希望在我的模型中有一个名为“before”的专栏 不幸的是,当我尝试创建和保存实体时,出现以下错误: [PDOException]SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行中使用的“before,after,created_at”值(1047,“blabla”,“toto”,“at”)附近的正确语法 我创建此实体的步骤与往常一样: 如果我将我的列“before”重命名为
感谢在config/app.php的数据源配置中添加
'quoteIdentifiers'=>true
以启用标识符引用,您将能够使用保留字。在config/app.php的数据源配置中添加'quoteIdentifiers'=>true
以启用标识符引用,您将能够使用保留字d words.在保存方法中设置查询时,只需在`before`周围添加这些内容……在保存方法中设置查询时,只需在`before`周围添加这些内容……请注意,这将对性能产生影响,因为ORM需要做额外的工作。如果您必须有一个名为before的列,但如果设计n完全在您的控制之下,可能值得尝试考虑一个非保留字的替代方案。请注意,这将对性能产生影响,因为ORM需要做额外的工作。如果您必须在前面命名列,这是一个有用的选项,但如果设计完全在您的控制之下,则可能值得尝试考虑of一个不是保留字的替代词。
$this->save(
$this->newEntity([
'tracker_id' => $trackerEntity->get('id'),
'before' => 'blabla',
'after' => $after,
'created_at' => new \DateTime(),
])
);