2009-08-06 4 views
2

저는 PHP와 SQL Server 2008을 사용하고 있으며 PHP 1.0 용 SQL Server Driver에는 mysql_real_escape_string과 비슷한 이스케이프 문자열이 없습니다. Sql Server 2008 및 PHP - sqlsvr_escape_string?

난 그냥

function sqlsvr_escape_string($string) 
{ 
    $pattern = "'"; 
    $replace = "''"; 
    return(stripslashes(eregi_replace($pattern,$replace,$string))); 
} 

같은 뭔가 작은 따옴표를 교체해야하거나 내가 그것을 매개 변수화 문을 사용하기 때문에 염려 할 필요가 없습니다합니까? 예 : 내가 찾을 수

$tsql = "SELECT * from tblUsers where email=(?) AND password=(?)"; 
$params = array($email, $encryptedPass); 
$stmt = sqlsvr_prepare($conn, $tsql, $params); 

유일한 자원은 위의 코드 조각에서입니다 this했다.

도움과 의견을 보내 주셔서 감사합니다. 이 준비된 문을 사용하기 때문에

- TK

답변

2

나중에. 매개 변수화 된 문을 사용하는 경우 SQL을 이스케이프 처리하는 것에 대해 걱정할 필요가 없습니다.

"클라이언트 코더"관점에서 (사용자가 SQL Server 클라이언트에서와 같이) 매개 변수화 된 명령문을 사용하는 이유는 사용자가 자신의 값을 적절히 또는 지속적으로 신뢰하지 않는다는 것입니다. 대신, 당신은 sqlsvr_prepare (또는 AdoDB, Propel, Doctrine 등)을 생성하고 유지하는 코더들에게 그 책임을 아웃소싱합니다. 모든 데이터가 올바르게 이스케이프 처리되는지 확인하려면 작업입니다.

2

(아마도 "매개 변수화 문"이라고 함), 사용자가 직접 데이터를 탈출 할 필요가 없습니다 : 드라이버가 사람들을 탈출하는 방법을 알게 될 것이다, DB에 무엇에 따라 , 나는 생각한다.

저는 여러분이 직접 이스케이프 기능을 직접 작성하지 않아도됩니다.

물론 테스트하는 것이 가장 좋습니다. 예를 들어 작은 따옴표가 포함 된 임의의 문자열을 삽입 할 수 있습니까? 견적이 DB에 저장되어 있습니까? 아니면 오류가 있습니까?