【问题标题】:Database Error PDOException数据库错误 PDOException
【发布时间】:2018-07-26 19:34:48
【问题描述】:

我创建了我的数据库表并像往常一样使用 CakePHP 3 烘焙,但是当我将浏览器指向某个链接时,它给了我这个错误:

错误:SQLSTATE[42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'AS Users__contact person, Users.Phoneno AS Users__Phoneno, Users.email AS `U' 附近使用正确的语法

如果您使用 SQL 关键字作为表列名,您可以在 config/app.php 中为您的数据库连接启用标识符引用。

SQL 查询:

SELECT Users.id AS `Users__id`, 
        Users.name AS `Users__name`, 
        Users.address AS `Users__address`, 
        Users.contact person AS `Users__contact person`, 
        Users.Phoneno AS `Users__Phoneno`, 
        Users.email AS `Users__email` 
FROM users Users 
LIMIT 20 OFFSET 0

【问题讨论】:

  • 列名中是否真的有空格,即Users.contact person,还是应该是下划线?如果它真的是一个空格,那么使用Users.`contact person` 即在语法错误周围的回勾
  • @RiggsFolly 很好地格式化了内联代码。我永远做不到正确:)
  • @Phil 是的,它是一头野兽。您必须在您放入一组反引号的反引号上使用转义字符,即“\”。有时我可能需要很长时间才能做到这一点!
  • 我还想问一下,为什么要为这些包含 2 个下划线的列名创建别名?你喜欢为难自己吗?
  • __ 是蛋糕的东西,它是模型__列。这是编写原生查询并让它们以与模型相同格式返回数据的方式。

标签: php mysql portal cakephp-3.x


【解决方案1】:

感谢大家和@RiggsFolly 很高兴在 SQL 中观察到这一点

错误来自联系人列中的空格,而不是 SQL 中的联系人

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 2019-04-24
    • 1970-01-01
    相关资源
    最近更新 更多