NOTICE

MSSQL escape

Date : 2011. 4. 13. 12:00 Category : Programming/SQL
INSERT INTO gd_member_qna(subject,contents,parent,m_no,regdt,ip,market) VALUES ('상품배송문의 답변입니다.','정상적으로 발송이 되어, 7일 정상적으로 고객님께서 받으셔야 합니다. 상품배송추적을 해보니 '미배송'이라 표기되어 있어~~~ 감사합니다.','436','163',getdate(),'124.198.xxx.xxx','1')


보통 저런 식으로 '', "" 따옴표 형제들이 들어가면 문제가 발생한다.
PHP와 MySQL을 예로 들면 addslashes를 붙여서 디비에 넣어 준다.
아래와 같이 된다.

INSERT INTO gd_member_qna(subject,contents,parent,m_no,regdt,ip,market) VALUES ('상품배송문의 답변입니다.','정상적으로 발송이 되어, 7일 정상적으로 고객님께서 받으셔야 합니다. 상품배송추적을 해보니 \'미배송\'이라 표기되어 있어~~~ 감사합니다.','436','163',getdate(),'124.198.xxx.xxx','1')


문제는 MSSQL에서는 escape 문자가 \가 아니라 '다.
간단하게 하려면 편법을 이용해서
str_replace("'", "''", 내용);
이렇게 바꿔서 넣어 주면 된다.

INSERT INTO gd_member_qna(subject,contents,parent,m_no,regdt,ip,market) VALUES ('상품배송문의 답변입니다.','정상적으로 발송이 되어, 7일 정상적으로 고객님께서 받으셔야 합니다. 상품배송추적을 해보니 ''미배송''이라 표기되어 있어~~~ 감사합니다.','436','163',getdate(),'124.198.xxx.xxx','1')