zda*_*ter 6 php mysql sql escaping
转义表名有点问题.我是如此愚蠢以至于我选择"show"作为桌子的名字.当我使用mysqli连接时,转义工作正常,但它不能与经典的mysql连接.有什么建议吗?对不起我的英语,我不是母语.
SELECT SQL_CALC_FOUND_ROWS year, nameShow
FROM `show`
LIMIT 0, 10
Run Code Online (Sandbox Code Playgroud)
我得到错误
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 –
Run Code Online (Sandbox Code Playgroud)
询问
$sQuery = "
SELECT SQL_CALC_FOUND_ROWS year, nameShow
FROM `show`
$sWhere
$sOrder
$sLimit
";
Run Code Online (Sandbox Code Playgroud)
MySQL 5.1参考手册的9.3节说回嘀嗒声(`)或双引号("),但是,我会按照上面的Fahim Parkar的评论来重新命名.
另外值得注意的是,如果使用第9.2节中的双引号,则必须使用ANSI_QUOTES SQL模式:
如果启用了ANSI_QUOTES SQL模式,则还允许在双引号内引用标识符
小智 5
问题是YEAR不是SHOW.YEAR是一个MySQL函数.最佳做法是始终引用列和表名称,使事情也易于阅读.
应该:
SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow`
FROM `show`
LIMIT 0, 10
Run Code Online (Sandbox Code Playgroud)