0

这是错误消息和我的代码。我只是没有看到错误。

描述:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的 'key='cbd1f3bb822e8617b624301774287490d3fcd97e' LIMIT 1' 附近使用正确的语法

询问:

SELECT * 
FROM wp_wpsc_api_keys 
WHERE name='MichelleAllen17' 
AND key='cbd1f3bb822e8617b624301774287490d3fcd97e' 
LIMIT 1

欢迎任何关于我的 sql 中可能出现的问题的想法

4

3 回答 3

8

KEY是保留关键字,必须用反引号转义。

SELECT  * 
FROM    wp_wpsc_api_keys 
WHERE   name = 'MichelleAllen17' AND 
        `key` = 'cbd1f3bb822e8617b624301774287490d3fcd97e' 
LIMIT   1
于 2013-01-12T00:54:19.973 回答
0

在字段名称周围加上反引号

...where `name`=... `key`
于 2013-01-12T00:55:17.560 回答
-1

作为反引号的替代方案,另一种“最佳实践”模式是使用 table_name 或方便的表别名来限定所有列名,例如

SELECT t.*
  FROM wp_wpsc_api_keys t 
 WHERE t.name='MichelleAllen17'
   AND t.key='cbd1f3bb822e8617b624301774287490d3fcd97e'
 LIMIT 1

这可以防止 MySQL 将列名“key”视为保留字。

让我们明确一点:查询中的问题不在于缺少反引号……问题是 MySQL 将查询文本中的标记(在本例中为“键”)视为保留字,而不是名称的列。解决方案是防止 MySQL 将该标记视为关键字。使用反引号是实现此目的的一种方法,但不是必需的。

使用反引号是完全有效的,并且可以与限定列名一起完成。当列名包含空格或特殊字符时,需要使用反引号。这是相同的查询,表名和列名用反引号括起来:

SELECT t.*
  FROM `wp_wpsc_api_keys` t 
 WHERE t.`name`='MichelleAllen17'
   AND t.`key`='cbd1f3bb822e8617b624301774287490d3fcd97e'
 LIMIT 1

我只是碰巧发现不得不查看或键入不必要的反引号很烦人。即使不是必需的,使用击键(对我来说)使列名合格(“ t.”)更有用,因为我习惯于在有多个表时看到列名合格一个查询(对于很多非常有用的查询来说,这经常发生。)

于 2013-01-12T01:00:13.057 回答