从 PHP 程序运行的 SQL 列名上加上 '' 有啥效果吗?

Posted

技术标签:

【中文标题】从 PHP 程序运行的 SQL 列名上加上 \'\' 有啥效果吗?【英文标题】:Does putting '' on SQL column names run from a PHP program have any effect?从 PHP 程序运行的 SQL 列名上加上 '' 有什么效果吗? 【发布时间】:2015-07-15 11:41:21 【问题描述】:

下面两个代码有区别吗?在从 php 程序运行 SQL 时,在列名周围加上 '' 是否有任何影响?

代码 1:SELECT f.id FROM sample_table f;

代码 2:SELECT f.'id' FROM sample_table f;

【问题讨论】:

【参考方案1】:

是的,它会破坏 SQL

不应引用表名和列名,仅应引用文字字符串。

如果您需要包装表或列名,则使用反引号 (`)(至少对于 mysql),而不是引号 (')

【讨论】:

【参考方案2】:

从问题中我将暗示您指的是 SQL 方言,其中单引号是标识符转义字符。

如果是这种情况,它们之间的区别在于可以(但不推荐)使用保留关键字作为标识符名称。例如:

将导致错误:SELECT f.where FROM sample_table f;

按预期工作:SELECT f.'where' FROM sample_table f;

【讨论】:

这将是反引号 ` 或在某些数据库的 [] 例如 f.[where] 不是单引号 ' @Dave 它取决于使用的方言和配置,正如我在回答中所说的那样。

以上是关于从 PHP 程序运行的 SQL 列名上加上 '' 有啥效果吗?的主要内容,如果未能解决你的问题,请参考以下文章

php中sql查询的列名

如何通过SQL从IBM db2中的查询中获取列名

SQL Server 是不是可以使用 PHP 从 UNION 查询中返回不同的别名列名?

在ASP中SQL语句中表名或列名为啥要加中括号

SQL 列名不能被 jquery 索引

SQL - 如何从多个可能的列名中进行选择?