2010-07-12 3 views
0

안녕하세요. 미리 감사드립니다.다시 삽입하려면 데이터베이스 데이터에 mysql_real_escape_string을 사용해야합니까?

DB에서 데이터를 가져옵니다. 데이터가 이미 mysql_real_escape_string을 통해 db에 추가되었습니다.

일단 원시 변수와 비교하고 결과에 따라 원래의 db 데이터를 다른 db로 다시 삽입 할 수 있습니다.

제 질문은 데이타베이스에서 가져온 데이터에 mysql_real_escape_string을 사용해야합니까?

데이터가 이스케이프해야하는 문자를 포함 할 수 있으므로 백 슬래시가 db에 저장되지 않는다고 생각합니다.

내 코드는 다음과 같습니다

if(isset($row['location_uri']) && $row['location_uri'] != $location_uri) 
    { 
    $session_previous_page = $row['previous_page_uri']; 
    } 
else 
    { 
    $session_previous_page = $row['location_uri']; 
    } 

또한, 나는 그것이 원시 데이터를 비교하기 전에 나는 DB 데이터로 무엇을해야 하는가, $_SERVER['REQUEST_URI']에서 말을?

도움을 주셔서 감사합니다.

답변

3

다시 적용해야합니다. 이스케이프 함수는 슬래시 등으로 표시되므로 유효한 SQL 구문입니다. 이러한 슬래시는 실제로 데이터베이스에 저장되지 않습니다.

+0

감사합니다. 나는 많이 알았지 만 확신하고 싶었다. – k22k

1

예. 당신은 당신 자신의 질문에 대답했습니다 - 왜냐하면 특수 문자는 읽기에 변환되기 때문에 쓰기 위해 다시 이스케이프해야합니다.

$_SERVER['REQUEST_URI']에 대한 정확한 질문이 확실하지 않습니다. 그러나 이러한 변수를 절대로 믿어서는 안됩니다. 따라서 DB 쿼리에서 비교하는 경우 최소한 이스케이프 처리하는 것이 좋습니다.

+0

감사합니다. 내 말은, $ _Server [ 'REQUEST_URI']를 데이터베이스에 저장된 것과 비교한다는 것입니다. 따라서 데이터베이스에서 백 슬래시가 나타나지 않게되므로 DB 버전과 $ _Server [ 'REQUEST_URI'] 버전을 비교하는 것이 좋습니다. – k22k

+0

쿼리에 값을 주입하는 경우에도 여전히 이스케이프하는 것이 좋습니다. '$ _SERVER'의 값조차도 아무것도 믿어서는 안됩니다. –

+0

오 물론 그럴 것입니다. 그러나 나는 두 변수를 비교할 때 일치하지 않는 문제가있을 수 있다고 생각합니다. 나는 PHP 레벨에서 2 개의 변수를 비교하려고한다. 하나는 db와 다른 하나는 $ _Server이다. – k22k

관련 문제