Сделать Pdo сохранить обратную косую черту - PullRequest
1 голос
/ 12 марта 2011

В основном я хочу сохранить путь к изображению в базе данных

Пример: я хочу сохранить 'C:\wampp\www\project\images' в базе данных

Вместо этого Pdo удаляет всю обратную косую черту и превращает ее в 'C:wamppwwwprojectimages'

Есть ли способ заставить Pdo сохранить обратную косую черту?

Обновление с кодом:

$sql  = "INSERT INTO meal (pic_path) VALUES('C:\wamp\www\project')";
$db   = new PDO( $dsn, $username, $password );
$stmt = $db->prepare( $sql );
$stmt->execute();

Ответы [ 2 ]

3 голосов
/ 12 марта 2011

Причина, по которой это происходит, заключается в том, что вы используете двойные кавычки (") вокруг запроса, и поскольку обратная косая черта (\) является escape-символом, он удаляется.Вы можете исправить это, поместив две обратные косые черты вместе, чтобы получить один (C:\\wamp\\www\\project).

Однако лучше было бы передать его в качестве аргумента prepare, и вы можете сохранить двойнойцитаты.

$directory = "C:\wamp\www\project";

$sql  = "INSERT INTO meal (pic_path) VALUES(?)";
$db   = new PDO( $dsn, $username, $password );
$stmt = $db->prepare( $sql );
$stmt->execute(array($directory));

Подробнее о подготовленных высказываниях .

1 голос
/ 12 марта 2011

Вы должны использовать подстановку переменных PDO для безопасной вставки значений в базу данных. Чтобы отредактировать ваш код, он будет выглядеть так:

$sql  = "INSERT INTO meal (pic_path) VALUES(?)";
$db   = new PDO( $dsn, $username, $password );
$stmt = $db->prepare( $sql );
$stmt->execute(array('C:\wamp\www\project'));

PDO заменит? в вашем запросе с экранированной версией передаваемой вами строки.

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