作为反引号的替代方案,另一种“最佳实践”模式是使用 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.
”)更有用,因为我习惯于在有多个表时看到列名合格一个查询(对于很多非常有用的查询来说,这经常发生。)