mysql插入带单引号双引号的字符串

时间:2015-11-14
在用户提交表单的时候,有的用户会提交一些特殊字符,比如单引号双引号,此时,如果直接按正常字符串插入数据库的话,可能会出现无法正确插入数据库。对于表单里面的特殊字符,php提供了一个函数mysql_real_escape_string,这个函数可以将特殊字符转义。

mysql_real_escape_string() 函数转义 SQL 语句中使用的字符串中的特殊字符。

如果成功,则该函数返回被转义的字符串。如果失败,则返回 false。

语法 mysql_real_escape_string(string,connection)

参数 描述
string 必需。规定要转义的字符串。
connection 可选。规定 MySQL 连接。如果未规定,则使用上一个连接。

比如我们要将字符串“my name's zhangsan”插入到数据库,如果按照下面方法写sql语句,sql语句会报错。

​
​$str="my name's zhangsan";
mysql_query("insert into table (field1) values ('".$str."')");

这样写会报错。 应为字符串里面的单引号与sql的单引号冲突了。

正确的写法是

//转义字符串,以便在sql中使用​​
$str=mysql_real_escape_string("my name's zhangsan");
mysql_query("insert into table (field1) values ('".$str."')");

此时,存储在数据库里面的字符串是“my name/'s zhangsan”, 如果要讲这个字符串正确的现实出来,需要在读取数据后,使用stripslashes()函数将反斜杠去掉。