插入mySQL时忽略目录分隔符

时间:2011-09-26 13:15:47

标签: php mysql

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

以下是我的代码

            <?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')");
                       }
                    }
            ?>

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分:0)

在将数据插入数据库之前转义数据:mysql_real_escape_string

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

答案 2 :(得分:0)

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

但是,您最好使用mysql_real_escape_string()