在将字符串插入数据库之前,我正在尝试对其进行转义,此字符串包含一些需要转义的字符。例如:
$mystring = "So, This is the string it's causing me headaches."
我想把这个字符串插入一个有一定限制的字段,比如50。但问题是,当我使用mysql_real_eescape_string函数时,它添加了来转义我的单引号
'
,这使我的字符串长度为51,因此我无法将其插入到DB中。
使用mysqli_real_escape_string($mystring)
您也可以使用str_replace,它总是对我有效。
$mystring=str_replace("'","'","$mystring");
$mystring=str_replace("'","'","$mystring");
反斜杠不是字符串的部分。它只是SQL语句中字符串文本的一部分。这样想:
CONCAT('a', 'b', 'c')
SQL语句中有相当多的字符,但该语句的结果字符串只是包含3个字符的abc
。同样,这个:
'a'c'
是具有三个字符的字符串a'c
的正确格式的文字。
如果您的字符串在转义后变得越来越长,则可能是因为转义太频繁,会成为您试图存储的实际字符串的一部分。
请参阅http://sqlfiddle.com/#!2/76008/1演示。CCD_ 7完全适合3个字符的字段。