如何通过PHP和mysql正确转义字符串

时间:2011-04-30 07:12:39

标签: php mysql html database escaping

有人可以解释在字符串上使用mysql_real_escape_string或在列周围包装``之间的区别。

例如"insert into table (``column``) values ('$string')"

$escapestring = mysql_real_escape_string($string);
 "insert into table (column) values ('$escapedstring')"

这两者有什么区别,我应该使用什么?感谢。

2 个答案:

答案 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