我一直在尝试将目录路径插入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')");
}
}
?>
答案 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()
。