2011-09-26 7 views
1

myPath 테이블에 디렉토리 경로 (reportPath 열)를 삽입하려고했습니다. 삽입은 정상적으로 작동하지만 삽입시 디렉토리 구분 기호는 무시됩니다. 예 : D : \ public_html \ Testman \ config의 경로가 D : public_htmlTestmanconfig로 삽입됩니다. 내가 뭘 놓치고 있니?mySQL에 삽입 할 때 디렉토리 구분 기호가 무시됩니다.

$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
가 데이터베이스에 삽입하기 전에 데이터를 탈출

내 코드입니다 DIRECTORY_SEPARATOR은 \ (백 슬래시)로 설정됩니다. 그러나 백 슬래시 (backslash)는 PHP에서 특수 문자로, 다음의 연속 된 문자를 특수 문자 (다른 의미의 문자)로 해석합니다. 그래서 addslashes()을 사용하여 백 슬래시 문자를 이스케이프 처리합니다.

그러나 mysql_real_escape_string()을 사용하는 것이 좋습니다.

+0

감사합니다. Karolis/Halfdan, 감사합니다. –

1

당신은 슬래시를 탈출하는 것을 잊었다 : 아래

  <?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

사용하여 Windows : mysql_real_escape_string

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