php - 在 PDO 中使用名为 "before"的列名

标签 php mysql cakephp pdo cakephp-3.0

我正在使用 Cakephp 3,我希望在我的模型中有一个名为“之前”的列。

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

[PDOException] SQLSTATE[42000]: Syntax error or access violation: 1064 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 'before, after, created_at) VALUES (1047, 'blabla', 'toto', ' at line 1

我创建这个实体的方式与往常一样:

$this->save(
    $this->newEntity([
        'tracker_id' => $trackerEntity->get('id'),
        'before' => 'blabla',
        'after' => $after,
        'created_at' => new \DateTime(),
    ])
);

如果我将列“before”重命名为“toto”等其他名称,则它可以正常工作。 MYSQL 函数“之前”存在,所以我想这就是 PDO 不喜欢它的原因......

有人有办法仍然使用具有此名称的列吗?喜欢逃避该函数的方法吗?

谢谢

最佳答案

在 config/app.php 的数据源配置中添加 'quoteIdentifiers' => true 以启用标识符引用,并且您将能够使用保留字。

关于php - 在 PDO 中使用名为 "before"的列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43813310/

相关文章:

php - 使用 1 个查询从 2 个表中删除数据

CakePHP Shell 问题

PHPUnit_Extensions_Database_Testcase 返回未定义的方法

javascript - AJAX 调用后 PHP 结果不显示

mySQL- 使用 OR 语句

Mysql 字符串最多只能保存大约 277 个字符

php - 空php文件的第一个字节值的长时间

cakephp - 如何在nginx中配置cakephp

php - 我如何将带有 COUNT 参数的 SRANDMEMBER 结果存储在 SET 中?

php - 使用像 Kickstarter 这样的 Paypal Adaptive Payments API 使用 Amazon Payments?