Php addslashes函数在我尝试从数据库检索数据时添加一个真正的斜杠

Php addslashes函数在我尝试从数据库检索数据时添加一个真正的斜杠,php,mysql,pdo,Php,Mysql,Pdo,我需要在我的数据库中输入一个字符串,该字符串可能包含以下字符:”,在使用addslashes()函数之前,我无法输入该字符串,但是,当稍后尝试向用户显示用addslashes()操作的字符串时,该字符串将显示为斜杠 $this->adresse=addslashes($this->adresse);//example : L'Arc 稍后尝试显示时,我得到:L\Arc 为了插入数据库,我使用如下PDO: $req=$bdd->prepare('Insert into ...

我需要在我的数据库中输入一个字符串,该字符串可能包含以下字符:
,在使用
addslashes(
)函数之前,我无法输入该字符串,但是,当稍后尝试向用户显示用
addslashes()
操作的字符串时,该字符串将显示为斜杠

$this->adresse=addslashes($this->adresse);//example : L'Arc
稍后尝试显示时,我得到:
L\Arc

为了插入数据库,我使用如下
PDO

$req=$bdd->prepare('Insert into ...

你能帮助我吗,我想阻止这个字符进入查询,但在另一方面,我不希望
\
与字符串一起显示。

addslashes
不应该是必需的,也不应该在与数据库交互时使用。DB驱动程序提供的任何报价函数都优先于添加斜杠。优先于引号的函数是预处理语句参数,这将防止注入攻击。此外,您不能忘记参数,而可以忘记引用。例如:

$thing = new StdClass;
$thing->foo = 'bar';
$thing->addresse = 'anywhere';
$req = $bdd->prepare('INSERT INTO table (addresse, foo) VALUES (:addresse, :foo)');
$req->execute((array) $thing);
将对象强制转换为数组并将其传递给
execute
并不适合您的应用程序

addslashes与stripslashes成对使用


另外,可能需要用“”一个接一个地用两个单引号表示一些字符串替换。

您准备的语句的其余部分是什么?您是否正在使用准备好的语句参数?
$str = addslashes("dsa'ds'a''''ds'a'ds");
var_dump($str ); //with slashes
var_dump(stripslashes($str )); //without