TIP게시판

제목 오라클 escape 처리
글쓴이 초원을달리는유부남 작성시각 2010/01/05 14:21:19
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 19724   RSS

안녕하세요? 한창 질문을 갖고 달리는 유부남입니다.

지금은 오라클 escape에 대해서 고민을 하고 있는데요,
쿼리를 만들고 바인딩을 할 때,

mysql_driver.php 에는 mysql_real_escape_string() 또는 mysql_escape_string() 를 사용하고,
mssql_driver.php 에는

// Escape single quotes
$str = str_replace("'", "''", $CI->input->_remove_invisible_characters($str));
가 있습니다.

오라클에서 싱글쿼테이션을 찍으면 에러가 나서, 고민을 하던 중에 mssql_driver.php 에 있는 내용중 268라인의
코드를 oci8_driver.php의 410라인에 교체하였습니다.

이건 버그인 걸까요? 다른 의미가 있었을까요?
버그였다면, 이렇게 수정해서 쓴다면 말하고 싶고, 그게 아닌 다른 의도였다면, 대체 방법을 찾고 싶습니다.

ps. 혹시 오라클에서 지원하는 바인딩의 방법을 쓸 수 있는 길은 없을련지요?

 다음글 [기타 제품]사용자 비번 보안 강화 (5)
 이전글 cart + jquery (1)

댓글

kirrie / 2010/01/05 23:38:30 / 추천 0
저도 요즘 고민중인 이슈입니다. html entity로 변환해도 오라클에선 제대로 인식하지 못합니다. 이게 가능하려면 변수를 일일이 바인딩해야 하는데 (ci에서 이야기하는 바인딩 말고 oci_* 함수가 지원하는 변수 바인딩), 현재 ci의 oci8 드라이버는 변수 바인딩을 지원하지 않습니다. (프로시져 사용시에는 바인딩을 하긴 하더군요.)
또, 직접 sqlplus나 toad 등에서도 싱글 쿼테이션은 먹지 않습니다. 이때에 싱글 쿼테이션을 이스케이핑 하기 위해선 쿼테이션을 두개 찍어주면 되긴 하는데...

oci8 드라이버를 직접 수정해서 oci 바인딩을 해주도록 하는 방법 외에는 없을 것 같습니다. 같이 고민해보죠. ㅎㅎ;;
byung82 / 2010/01/07 21:38:03 / 추천 0
ci에서도 oci8 바인딩 가능합니다,.
현재 ci 외국포럼에 있는것이 있는데 것도 버그가 있어서 제가 수정해서 사용을 하고 있습니다.
일단 ci에 ar을 사용하시는게 좋습니다.
그런데 ci 에 ar이 oci8버전에 버그가 많습니다 ㅠ.ㅠ 이게 우울합니다.
필요하시다면 수정 해야할것들 정리해서 올려드리겠습니다.
kirrie / 2010/01/08 14:13:34 / 추천 0
byung82// 네 쫌 부탁드려요 ^^;