4

据我所读,例如,查询中的表名不需要反引号:(“INSERT INTO table_name ....”)。此外,据我所知,在名称中使用下划线是完全可以接受的语法:foo_bar。那么我的问题是,为什么这个查询失败了:

mysql_query("INSERT INTO quick_links WHERE ...etc");

当此查询完美运行时:

mysql_query("INSERT INTO `quick_links` WHERE ...etc");

“快速”或“链接”是保留字???我不这么认为,但话又说回来,我对 MySQL 还很陌生,所以我很抱歉。另外,在某些“存储引擎”中是否需要使用反引号(术语参考 phpMyAdmin)?如果这有什么不同,我碰巧正在使用“InnoDB”。

感谢您的回答,我是 MySQL 的新手,我想确保我了解这些细微差别。

我的完整查询是这样的:

mysql_query("INSERT INTO `quick_links` VALUES (
    '$user_id', '$ql_name', '$ql_url', '$ql_img'
)"); 

$ql_url 和 $ql_name 是通过 $_POST 获得的,然后在用于查询之前使用 trim 和 mysql_real_escape_string 进行清理。$ql_img 只是一个 url,指向一个上传缩略图的目录,而 $user_id 是用来识别登录的特定用户的。这两个查询从字面上看是完全相同的,除了周围的反引号表名。

4

1 回答 1

9

反引号仅用于转义MySQL 保留字。如果不使用任何保留关键字,则它们是可选的,前提是所使用的 tableNames 或 columnNames 具有no spaces它。

页面告诉模式中允许使用的字符。

于 2012-09-30T04:58:47.480 回答