2011-01-21 3 views
0
$url = "What's up with "You doing this""; 
$q = sprintf ("update user set url='%s'",$url); 
pg_query ($db_conn, $q) 

나는 사용자가 원하는대로 정확하게 모든 것을 데이터베이스에 삽입하려고합니다. 나는 아무것도 피하고 싶지 않아. 따옴표 때문에 위의 내용이 저에게 적합하지 않습니다. 작은 따옴표는 postgresql 문자열 (url = '% s')을 따라 가야한다는 것을 알고 있습니다. 내 URL 문자열에 큰 따옴표가 있기 때문에 쿼리가 업데이트되지 않기 때문에. 나는 모든 큰 따옴표에 대해 문자열을 대체하고 작은 따옴표를 만들 수 있지만 사용자가 정말로 큰 따옴표를 원한다면 어떨까요? postgresql 문서에 따르면 슬래시는 곧 폐기 될 예정이므로 (http://www.postgresql.org/docs/8.1/interactive/sql-syntax.html) 플러스 삽입에 반대하기 때문에 역 슬래시를 넣으려면 문자열 바꾸기를 사용할 수 없습니다. 사용자가 입력 한 것만postgresql 따옴표 문제

사람들은 내가 뭘한다고 제안합니까?

pg_query_params 
     (
     $db_conn, 
     "UPDATE user SET url = $1", 
     array('What's up with "You doing this"') 
     ); 

답변

1

를 사용하여 쿼리를 매개 변수화.

+0

나는 여전히 sprintf를 사용하는 것을 좋아합니다. 아직도 가능합니까? – keith

+0

@keith : 예, 입력 문자열에서 작은 따옴표를 큰 따옴표로 변경하십시오. 귀하의 예제에서는 아무 것도 없으므로 문자열을 그대로 둘 수 있습니다. 왜 당신은 매개 변수를 사용하고 싶지는 모르겠지만 그것은 물론 당신에게 달려 있습니다. – Quassnoi

+0

'what's' ->'what's''의 작은 따옴표를 벗어나야 만합니다. – Toto

0
는 = \ "와 무슨 일 \ '의"당신이 \ "을하고"이

$ URL이 같은 텍스트에 따옴표를 탈출

;

관련 문제