특수문자 db에 저장하는 방법 0 4 11,595

by db초보 [MySQL] mysql [2016.03.24 09:17:43]


insert문할때 '(작은따음표)나 특수문자가 들어가면 에러가 나옵니다

특수문자 없을때는 잘되는데.. 그래서 특수문자입력할때 작은따음표 하나더 붙였더니 에러는 사라졌는데..문제는 사용자가 특수문자를 넣는것입니다

특수문자를 넣어야되서 입력못하게는 못하는데.. if문해서 '가 들어갈때마다 '를 한번더 쓸수도 없고..

bb=Request.Form("aa")

insert into cs2 values ('"&bb&"')"

위에처럼 전페이지에서 aa를 가져와서 bb라는 변수에 넣고 db에 저장할려고 합니다

Response.Write bb    해보면 특수문자가 있습니다.

예) bb를 하면 내용

가가. '나나' 다다? 라라$

위에처럼 특수문자가 들어오면 에러가..

가가 나나 다다 라라

이렇게 특수문자가 안들어오면 에러는 안나는데...

by swlee [2016.03.24 09:25:36]

아스키 코드표보고 사용하시면 됩니다.

select chr(level)
from dual
connect by level <=130


by 마농 [2016.03.24 09:32:34]

sql 문장이 입력값에 따라 매번 다르게 생성되는군요.
바인드 변수를 사용해 SQL을 한번만 만들어 두고 변수값만 바꿔가며 사용하세요.


바인드 변수 사용시 장점
 1. 성능 향상 : 쿼리 재사용, SQL 파싱 비용 감소, 서버부하 감소
 2. 보안 강화 : SQL 인젝션 해킹 방지
 3. 에러 방지 : 특수문자 입력에 따른 에러 방지
 4. 가독성 향상 : 문자열을 연결기호들(+ & ")로 이어붙이면 가독성 떨어짐

bb = Request.Form("aa");
String sql = "INSERT INTO cs2 VALUES(?)";
PrepareStatement ps = con.PrepareStatement(sql);
ps.setString(1, bb);
ps.executeQuery();

 


by db초보 [2016.03.24 12:50:33]

음.. 에러가 나오네요..

개체가 필요합니다.: ''

14줄... PrepareStatement ps = con.PrepareStatement(sql)

<!-- #INCLUDE FILE="./inc/aa.inc" -->

<%
Dim WebUserAc,sql,con

bb = Request.Form("aa")

WebIP_Connect()
Set rs=server.CreateObject("ADODB.Recordset")

sql="insert into cs2 values(?)"
PrepareStatement ps = con.PrepareStatement(sql)
ps.setString 1, bb
ps.executeQuery()

rs.Open sql, WebUserAc
%>

 


by 마농 [2016.03.24 13:39:36]

java / jsp 구문입니다.

사용하시는 언어에 맞게 작성하세요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입