2011-09-26 66 views
1

我一直在试图将一个目录路径插入到一个mySQL表(reportPath列)中。插入工作正常,但插入时忽略目录分隔符。例如,将D:\ public_html \ Testman \ config的路径插入为D:public_htmlTestmanconfig。我错过了什么?目录分隔符在插入mySQL时被忽略

下面是我的代码

  <?php 
        include "config.php" ; 
        $dir = "csvreports"; 
        $files = scandir($dir); 
        $fLocation=dirname(__FILE__).DIRECTORY_SEPARATOR; 

        foreach ($files as $key => $value) 
        { 
        if (substr($value, -4) == ".CSV") 
         {   
         mysql_query("INSERT INTO tableReports (reportPath, reportName) VALUES('$fLocation.$value','$value')"); 
         } 
        } 
      ?> 

回答

0

将其插入到数据库之前逃离数据:mysql_real_escape_string

mysql_query(" 
    INSERT INTO tableReports (reportPath, reportName) 
    VALUES(
     '". mysql_real_escape_string($fLocation.$value) ."', 
     '". mysql_real_escape_string($value) ."' 
    ) 
"); 
+0

感谢Karolis/Halfdan,它工作。 –

1

你忘了逃跑的斜线:

$sql = sprintf("INSERT INTO tableReports (reportPath, reportName) VALUES('%s','%s')", 
      mysql_real_escape_string($fLocation.$value), 
      mysql_real_escape_string($value) 
); 
mysql_query($sql); 
0

当使用Windows ,DIRECTORY_SEPARATOR设置为\(反斜杠)。但反斜杠是PHP中的一个特殊字符,它使PHP将下一个后续字符解释为特殊字符(具有其他含义的字符)。所以你可以用使用addslashes()来转义反斜杠字符。

但是,您最好使用mysql_real_escape_string()