2012-05-07 3 views
1

MySQL에서 혼란을 일으키는 사랑스러운 작은 따옴표는 사촌이있는 것 같습니다. Google은 사용자가 이메일을 통해 콘텐츠를 붙여 넣거나 거의 모든 곳에서 복사하여 붙여 넣을 수있는 시스템을 갖추고 있으며, 한 번 인용 할 때마다 또 다른 팝업이 나타납니다. 여기에 다른 사람은 다음과 같습니다 : - 제거, 나는 그답지을이 마음에 들지Regex 다른 종류의 작은 따옴표 바꾸기

return Regex.Replace(oldText, @"[’´'`""]", @""); 

< ’ ´ ' `

내 정규식이 매우 약한 것처럼, 내 동료 개발자가 난 그냥 사용하여 제거해야한다고 말했다 모든 작은 따옴표. 많은 포럼에서 제안한 것처럼 내가하고 싶은 것은 단일 인용 부호를 두 배로 올리는 것입니다. 이게 맞을까요?

return Regex.Replace(oldText, @"[’´'`""]", @"''"); 

이 생각 때문에 자신의 DAL에서, 수행, 그는 작은 따옴표와 함께 자신의 삽입 문을 생성합니다 :

sql.Append(",`to_complete_by`='" + obj.toCompleteBy + "'"); 

내가 이것에 ^^을 변경하여이 오류를 방지 할 수 있을까?

sql.Append(",`to_complete_by`=\"" + obj.toCompleteBy + "\""); 

또는 정규식 대체 방법은 무엇입니까?

+7

당신이 묘사하는 모든 방법은 피할 수 있고 피할 수 있습니다. 소유하고 싶지 않은 경우 준비된 문을 사용하십시오. –

+1

SqlParameters를 사용하면 어떨까요? 아무것도 바꾸지 않아도됩니다. – shriek

+0

나는 prepared statement에 대해 생각하고 있었지만, 어떤 이유로 든 mySql 4.01을 사용해야한다. 다행히도 지원하지는 않는다. 왜냐하면 나는 이것이 모든 것에 고약을 가하고, 아마도 다른 것이 가장 많이 나타날 것이라고 동의한다. SqlParameters에 너무 많은 정보를 담고 있지는 않습니다. 고마워요;) –

답변

1

준비된 문을 지원하지 않는 이전 버전의 MySQL로 작업하는 경우 현대 데이터베이스 인터페이스가 데이터베이스 자체에서 지원하지 않는 기능을 모방 할 수 있다는 사실을 적어도 활용해야합니다 . 귀하의 경우에는 잠재적 인 성능 향상이 아니라 명령문 구문 및 값 표현의 분리 된 보안 성이 추가되었습니다.