从 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 列名上加上 '' 有啥效果吗?的主要内容,如果未能解决你的问题,请参考以下文章