Escape table name MySQL

自古美人都是妖i 提交于 2019-12-10 14:11:22

问题


I have a little problem with escaping table name. I was so stupid that i choose "show" for the name of table. When I use mysqli connection the escaping works fine, but its not working with classical mysql connection. Any advise? Sorry for my English, I am not native speaker.

SELECT SQL_CALC_FOUND_ROWS year, nameShow 
FROM   `show`
LIMIT 0, 10

I get error as

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 –

Query

$sQuery = "
    SELECT SQL_CALC_FOUND_ROWS year, nameShow 
    FROM   `show`
    $sWhere
    $sOrder
    $sLimit
    ";

回答1:


Section 9.3 of MySQL 5.1 Reference Manual says back ticks (`) or double quotes ("), however, I'd go with Fahim Parkar's comment above and just rename the table.

Also worth noting, you must use ANSI_QUOTES SQL mode if using double quotes per Section 9.2:

If the ANSI_QUOTES SQL mode is enabled, it is also permissible to quote identifiers within double quotation marks




回答2:


The problem is with YEAR not with SHOW. YEAR is a MySQL function. Best practice is to quote column and tables names all the time, makes things easy to read also.

Should be:

SELECT SQL_CALC_FOUND_ROWS `year`, `nameShow` 
FROM   `show`
LIMIT 0, 10



回答3:


Backticks should work fine

try putting a comma after SQL_CALC_FOUND_ROWS,

SELECT SQL_CALC_FOUND_ROWS, year, nameShow 
FROM   `show`
LIMIT 0, 10


来源:https://stackoverflow.com/questions/11004768/escape-table-name-mysql

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!