addslashes函数在我尝试从数据库中检索数据时添加了一个斜杠

时间:2011-05-21 20:42:45

标签: php mysql pdo

我需要在我的数据库中输入一个字符串,这个字符串可能包含这个字符:',我无法输入这个,直到我使用addslashes()函数,但是在尝试显示时稍后使用addslashes()操纵的字符串将以斜杠

显示给用户
$this->adresse=addslashes($this->adresse);//example : L'Arc

稍后尝试显示时,我得到了:L\'Arc

要插入数据库,请使用PDO,如下所示:

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

你可以帮助我,我想阻止这个问题'进入查询,但在另一方面我不希望\显示为字符串。

2 个答案:

答案 0 :(得分:1)

$str = addslashes("dsa'ds'a''''ds'a'ds");
var_dump($str ); //with slashes
var_dump(stripslashes($str )); //without

addslashes与stripslashes配对

也可以一个接一个地尝试“两个单引号”。

答案 1 :(得分:0)

addslashes不一定是必需的,在与数据库交互时不应使用。首选addslashes以上是数据库驱动程序提供的引用函数。首选的引用函数是预处理语句参数,可以防止注入攻击。而且,你不能忘记参数,而你可以忘记引用。例如:

$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也不适合DAL