【问题标题】:SQL Server Incorrect syntax near '`'SQL Server '`' 附近的语法不正确
【发布时间】:2016-05-04 11:10:51
【问题描述】:

我有下面的 SQL,我正在尝试对 Microsoft SQL Server 执行。

$rs = odbc_exec($conn, "INSERT INTO tGuest (`GuestName`, `GuestEmailAddress`, `GuestPassword`, `GuestCity`, `GuestCountry`) VALUES ('test', 'test', 'test', 'test', 'test');");

但是我遇到了以下错误:

[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near '`'.

我看不出 SQL 代码有什么问题,所以我不确定我是否遗漏了什么或者还有什么问题。

【问题讨论】:

  • 只需删除 '`' ;)
  • 删除这个;你就完成了
  • 即使使用 ODBC,仍然需要使用每个目标 DBMS 支持的原生 SQL 代码。

标签: php sql-server tsql


【解决方案1】:

SQL Server 使用[]/" 引用identifiers

分隔标识符

括在双引号(")或方括号([ ])中。符合标识符格式规则的标识符 可能没有分隔。

$rs = odbc_exec($conn, "INSERT INTO tGuest ([GuestName], [GuestEmailAddress], [GuestPassword], [GuestCity], [GuestCountry]) VALUES ('test', 'test', 'test', 'test', 'test');");

在您的情况下,您也可以完全跳过它,因为您的标识符是有效的:

INSERT INTO tGuest(GuestName,GuestEmailAddress,GuestPassword,GuestCity,GuestCountry) 
VALUES ('test', 'test', 'test', 'test', 'test');

您的命名约定似乎是多余的。如果表名为tGuest,则无需在列前加上Guest

【讨论】:

  • 我其实很喜欢这种命名转换,自己用。这在编写多个连接查询时非常有用,因为您不需要使用表名或别名作为列标识符的一部分。此外,它几乎完全阻止了使用保留字作为列名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-02-09
  • 2017-07-15
  • 2019-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多