2011-03-12 70 views
0

基本上我想对图像的路径存储到数据库中使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(); 
+0

你能告诉我们一些关于如何插入和检索数据的代码吗? – 2011-03-12 00:43:32

+0

@tim更新了代码 – slier 2011-03-12 00:58:31

回答

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

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