8

我对转义表名有一点问题。我太愚蠢了,我选择“显示”作为表名。当我使用 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
    ";
4

3 回答 3

10

MySQL 5.1 参考手册的第 9.3 节说反引号 (`) 或双引号 ("),但是,我会使用上面 Fahim Parkar 的评论并重命名表。

另外值得注意的是,如果根据第 9.2 节使用双引号,则必须使用 ANSI_QUOTES SQL 模式:

如果启用了 ANSI_QUOTES SQL 模式,也允许在双引号内引用标识符

于 2012-06-12T21:04:15.897 回答
4

问题在于 YEAR 而不是 SHOW。YEAR 是一个 MySQL 函数。最佳做法是始终引用列名和表名,这样也便于阅读。

应该:

SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow` 
FROM   `show`
LIMIT 0, 10
于 2012-11-15T07:19:11.977 回答
1

反引号应该可以正常工作

尝试在 SQL_CALC_FOUND_ROWS 后加一个逗号,

SELECT SQL_CALC_FOUND_ROWS, year, nameShow 
FROM   `show`
LIMIT 0, 10
于 2012-06-12T21:16:28.497 回答