MySQL转义字符串导致数据长度错误

时间:2013-11-18 11:39:03

标签: php

我试图在将字符串插入我的数据库之前转义它,该字符串包含一些需要转义的字符。 例如:

 $mystring = "So, This is the string it's causing me headaches." 

我想将此字符串插入到具有特定限制的字段中,例如50。 但问题是,当我使用mysql_real_escape_string函数时,它会添加\以逃避我的单引号',这使我的字符串长度为51,因此我无法将其插入数据库。

3 个答案:

答案 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");