使Pdo保留反斜杠

时间:2011-03-12 00:40:27

标签: php pdo

基本上我想将图像的路径存储到数据库中

示例:我想将'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 个答案:

答案 0 :(得分:3)

发生这种情况的原因是因为您在查询周围使用双引号("),并且由于反斜杠(\)是转义字符,因此它被删除。您可以通过将两个反斜杠放在一起来解决这个问题,这样就可以产生一个(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));

了解更多about prepared statements

答案 1 :(得分:1)

您应该使用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将取代?在您的查询中使用您传递的字符串的转义版本。

相关问题