这是错误消息和我的代码。我只是没有看到错误。
描述:
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 'key='cbd1f3bb822e8617b624301774287490d3fcd97e' LIMIT 1' at line 1
查询:
SELECT *
FROM wp_wpsc_api_keys
WHERE name='MichelleAllen17'
AND key='cbd1f3bb822e8617b624301774287490d3fcd97e'
LIMIT 1
欢迎任何关于我的SQL中可能出现问题的想法
答案 0 :(得分:8)
KEY
是保留关键字,必须使用反引号进行转义。
SELECT *
FROM wp_wpsc_api_keys
WHERE name = 'MichelleAllen17' AND
`key` = 'cbd1f3bb822e8617b624301774287490d3fcd97e'
LIMIT 1
答案 1 :(得分:0)
在字段名称周围添加backtiks
...where `name`=... `key`
答案 2 :(得分:-1)
作为反引号的替代方法,另一种“最佳实践”模式是使用table_name或方便的表别名来对所有列名称进行QUALIFY,例如。
SELECT t.*
FROM wp_wpsc_api_keys t
WHERE t.name='MichelleAllen17'
AND t.key='cbd1f3bb822e8617b624301774287490d3fcd97e'
LIMIT 1
这可以防止MySQL将列名“key”视为保留字。
让我们明确一点:查询中的问题并不是缺少反引号......问题是MySQL在查询文本中看到一个令牌(在本例中为“key”)作为保留字,而不是作为列的名称。解决方案是防止MySQL将该标记视为关键字。使用反引号是实现这一目标的一种方法,但它们不是必需的。
使用反引号是完全有效的,可以与限定列名一起完成。当列名包含空格或特殊字符时,需要使用反尖。这是相同的查询,表格和列名称用反引号括起来:
SELECT t.*
FROM `wp_wpsc_api_keys` t
WHERE t.`name`='MichelleAllen17'
AND t.`key`='cbd1f3bb822e8617b624301774287490d3fcd97e'
LIMIT 1
我碰巧发现必须查看或输入不必要的反引号很烦人。使用击键(对我来说)更有用的是使列名称合格(“t.
”),即使这不是必需的,只是因为我习惯于看到列名称合格时查询中有多个表(对于许多非常有用的查询,这种情况很多。)