有人可以解释在字符串上使用mysql_real_escape_string或在列周围包装``之间的区别。
例如"insert into table (``column``) values ('$string')"
或
$escapestring = mysql_real_escape_string($string);
"insert into table (column) values ('$escapedstring')"
这两者有什么区别,我应该使用什么?感谢。
答案 0 :(得分:2)
反引号`和单引号'
之间存在差异。
反引号旨在转义可能与MySQL保留字冲突的表名和字段名。如果我有一个名为date
的字段和一个像SELECT date FROM mytable
这样的查询,我需要转义使用date
,这样当MySQL解析查询时,它将解释我对{{}的使用1}}作为字段而不是数据类型 date
。
单引号date
适用于文字值,如'
中所示。如果SELECT * FROM mytable WHERE somefield='somevalue'
本身包含单引号,则需要对它们进行转义以防止过早关闭引号文字。
答案 1 :(得分:-1)
这两者根本没有关系(据我所知,无论如何)
来自手册:http://php.net/manual/en/function.mysql-real-escape-string.php
转义中的特殊字符 unescaped_string,考虑到 当前的字符集 连接,以便安全放置 它在mysql_query()中。
基本上它的作用是,它将转义进入mysql查询不安全的字符(可能会破坏或破坏查询)
因此o'reily
将成为o\'reily