Функция addlashes добавляет действительно слеш, когда я пытаюсь получить данные из базы данных - PullRequest
0 голосов
/ 22 мая 2011

мне нужно ввести строку в мою базу данных, эта строка может содержать этот символ: ', я не смог ввести это, пока не использовал функцию addslashes(), однако при попытке отобразить строку, обработанную с помощью addslashes() позже для пользователя появляется с косой чертой

$this->adresse=addslashes($this->adresse);//example : L'Arc

при попытке отобразить его позже я получил: L\'Arc

для вставки в базу данных я использую PDO так:

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

Не могли бы вы помочь мне, я хочу, чтобы этот символ ' не включался в запрос, но с другой стороны, я не хочу, чтобы \ отображался со строкой.

Ответы [ 2 ]

1 голос
/ 22 мая 2011
$str = addslashes("dsa'ds'a''''ds'a'ds");
var_dump($str ); //with slashes
var_dump(stripslashes($str )); //without

addlashes идет в паре с полосками

также может содержать две одинарные кавычки, одна за другой, может потребоваться замена строки.

0 голосов
/ 22 мая 2011

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...