我有一个转义表名的问题。我是如此愚蠢以至于我选择“show”作为桌子的名字。当我使用mysqli连接时,转义工作正常,但它不能与经典的mysql连接。有什么建议吗? 对不起我的英语,我不是母语。
SELECT SQL_CALC_FOUND_ROWS year, nameShow
FROM `show`
LIMIT 0, 10
我收到错误
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 'show' at line 2 –
查询
$sQuery = "
SELECT SQL_CALC_FOUND_ROWS year, nameShow
FROM `show`
$sWhere
$sOrder
$sLimit
";
答案 0 :(得分:6)
Section 9.3 of MySQL 5.1 Reference Manual 说回嘀嗒(`)或双引号(“),但是,我会按照上面的Fahim Parkar的评论来重新命名。
另外值得注意的是,如果每个Section 9.2使用双引号,则必须使用ANSI_QUOTES SQL模式:
如果启用了ANSI_QUOTES SQL模式,也允许使用 在双引号内引用标识符
答案 1 :(得分:5)
问题是YEAR不是SHOW。 YEAR是一个MySQL函数。 最佳做法是始终引用列和表名称,使事情也易于阅读。
应该是:
SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow`
FROM `show`
LIMIT 0, 10
答案 2 :(得分:1)
反引号应该可以正常工作
尝试在SQL_CALC_FOUND_ROWS之后输入逗号,
SELECT SQL_CALC_FOUND_ROWS, year, nameShow
FROM `show`
LIMIT 0, 10