我试图在将字符串插入我的数据库之前转义它,该字符串包含一些需要转义的字符。 例如:
$mystring = "So, This is the string it's causing me headaches."
我想将此字符串插入到具有特定限制的字段中,例如50。
但问题是,当我使用mysql_real_escape_string函数时,它会添加\
以逃避我的单引号'
,这使我的字符串长度为51,因此我无法将其插入数据库。
答案 0 :(得分:-1)
反斜杠是不是字符串的一部分。它只是SQL语句中字符串文字的一部分。想想这样:
CONCAT('a', 'b', 'c')
在SQL语句中有很多字符,但是这个语句的结果字符串只有abc
,有3个字符。以同样的方式,这个:
'a\'c'
是具有三个字符的字符串a'c
的格式正确的文字。
如果您的字符串在转义后实际上变长了,那么您可能会经常转义并且\
会成为您尝试存储的实际字符串的一部分。
有关演示,请参阅http://sqlfiddle.com/#!2/76008/1。 'a\'c'
非常适合3 char字段。
答案 1 :(得分:-1)
使用mysqli_real_escape_string($mystring)
答案 2 :(得分:-1)
你也可以使用str_replace,它总是对我有效。
$mystring=str_replace("\'","'","$mystring");
$mystring=str_replace("'","\'","$mystring");