【问题标题】:SQL syntax error with no known mistakes in query [duplicate]SQL语法错误,查询中没有已知错误[重复]
【发布时间】:2017-08-30 12:30:42
【问题描述】:

我正在尝试执行的一个非常简单的 SQL 查询出现语法错误:

INSERT INTO history (character, type, amount, extra)
VALUES('$character', '$type', '$amount', '$extra')

表格的设置方式如下:

SQL table

它给我的完整错误如下:

您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 1 行的 'character, type, amount, extra) VALUES('Ellie', 'Gift', '-200', 'to Rick')' 附近使用正确的语法

我已经检查并仔细检查了常见的错误,如表名、拼写错误、列顺序等,但我不知道它仍在检测什么,希望你们中的一个可以帮助我...

【问题讨论】:

  • 金额为整数并使用撇号。插入历史记录(charactertypeamountextra)值('$character','$type',$amount,'$extra')
  • amountcolumn 是 INTEGER 类型,这就是它拒绝 -ve 值的原因。将其更改为unsigned,然后它将起作用。还要在character周围添加反引号
  • stackoverflow 在此处的 cmets 中不显示反引号/撇号。

标签: php mysql mysqli


【解决方案1】:

character 是 mysql 中的 reserved keyword。重命名列或使用反引号将其转义。

INSERT INTO history (`character`, type, amount, extra)
VALUES('$character', '$type', $amount, '$extra')

【讨论】:

  • 其实只保留CHARACTER,而不是TYPE,所以只需要勾选前者。我之前确实进行了编辑以添加“保留”,因此您可能需要分别重新调整;-)
  • 太棒了,我只是将列重命名为 characterName 而不是 character,它可以工作!非常感谢大家!
猜你喜欢
  • 2018-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
  • 1970-01-01
  • 2016-12-30
  • 2023-03-05
  • 2019-01-02
相关资源
最近更新 更多