Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用名为“的列名称”;“之前”;与PDO_Php_Mysql_Cakephp_Pdo_Cakephp 3.0 - Fatal编程技术网

Php 使用名为“的列名称”;“之前”;与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”重命名为

我正在使用Cakephp 3,我希望在我的模型中有一个名为“before”的专栏

不幸的是,当我尝试创建和保存实体时,出现以下错误:

[PDOException]SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行中使用的“before,after,created_at”值(1047,“blabla”,“toto”,“at”)附近的正确语法

我创建此实体的步骤与往常一样:

如果我将我的列“before”重命名为另一个名称,如“toto”,它就工作了。 MYSQL函数“before”存在,所以我想这就是PDO不喜欢它的原因

有没有人有办法继续使用这个名称的列?比如一种逃避函数的方法


感谢在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(),
    ])
);