안녕하세요?
오랜만에 큐브리드용 그누보드와 관련하여 질문글 올립니다.
< 운영환경 >
운영체제 : WinXP SP2
큐브리드버전 : 7.1.0.1014
아파치 : 2.2.4
PHP : 5.2.3
그누보드 : 성능개선 큐브리드용 4.21.02
* 설치는 \'오토셋5(베타) 큐브리드 패키지\'로 통합설치 하였습니다.
< 문의사항 >
그누보드 게시판의 \'basic\'스킨을 수정하는 도중
여분필드하나(wr_1)를 확장필드로 쪼개어 전화번호를 입력을 받는 작업 후 테스트를 해보니
다음과 같은 오류가 발생하였습니다.
- 오류내용 -
update g4_write_Order set wr_1 = \'010-2345-6789\' where wr_id = \'101\'
-494 : 시멘틱: \'=\' 연산자는 타입 integer 와 char 에서는 사용할 수 없습니다.
error file : /aniletter/bbs/write_update.php
Backtrace:
file: 1153 - D:\\AutoSet\\public_html\\aniletter\\lib\\common.lib.php
call: backtrace()
file: 10 - D:\\AutoSet\\public_html\\aniletter\\skin\\board\\Order\\write_update.skin.php
call: sql_query(\" update g4_write_Order set wr_1 = \'010-2345-6789\' where wr_id = \'101\' \")
file: 550 - D:\\AutoSet\\public_html\\aniletter\\bbs\\write_update.php
call: include_once(\"D:\\AutoSet\\public_html\\aniletter\\skin\\board\\Order\\write_update.skin.php\")
기본스킨에서 코드를 추가한 부분은 다음과 같습니다.
- write.skin.php 파일 -
<?
$tel1 = explode(\"-\",$write[wr_1]); // 글 수정시 기존 값을 \'-\'기준으로 다시 쪼개어 선택옵션과 입력란에 값을 표시할 수 있게 하기 위함(?)
$tel1a = $tel1[0];
$tel1b = $tel1[1];
$tel1c = $tel1[2];
?>
<select name=\'tel1a\' itemname=\'기본연락처\' required >
<option value=\'\'>선택</option>
<option value=\'010\' <? if($tel1a == \"010\") echo \"selected\"; ?>>010</option>
<option value=\'011\' <? if($tel1a == \"011\") echo \"selected\"; ?>>011</option>
<option value=\'016\' <? if($tel1a == \"016\") echo \"selected\"; ?>>016</option>
<option value=\'017\' <? if($tel1a == \"017\") echo \"selected\"; ?>>017</option>
** 중략 **
<option value=\'063\' <? if($tel1a == \"063\") echo \"selected\"; ?>>063</option>
<option value=\'064\' <? if($tel1a == \"064\") echo \"selected\"; ?>>064</option>
<option value=\'070\' <? if($tel1a == \"070\") echo \"selected\"; ?>>070</option>
</select>
- <input name=\'tel1b\' type=\'text\' size=\'4\' minlength=\'3\' maxlength=\'4\' itemname=\'기본연락처\' numeric nospace required value=\'<?=$tel1b?>\'>
- <input name=\'tel1c\' type=\'text\' size=\'4\' minlength=\'4\' maxlength=\'4\' itemname=\'기본연락처\' numeric nospace required value=\'<?=$tel1c?>\'>
그리고 글 작성 완료 클릭시 불려지는 파일에
나누어진 확장필드의 값을 하나로 합쳐 DB에 저장시키는 구문
- write_update.skin.php 파일 -
// 기본연락처 값 입력시키기
$wr_1 = \"$tel1a-$tel1b-$tel1c\";
$sql1 = \" update $write_table set wr_1 = \'$wr_1\' where wr_id = \'$wr_id\' \";
sql_query($sql1);
오류에 나타나는 common.lib.php, write_update.php 파일은 수정한 적이 없습니다.
그누보드 홈페이지 질문답변 게시판과 와 큐브리드 Q&A게시판 및 기술자료
20071220_PHP_CUBRID함수_MySQL함수_비교.pdf 파일이나 CUBIRD 7.1 매뉴얼 등
문서를 찾아보기도 하고 MySQL 버전용 그누보드와 CUBRID용 그누보드를 비교해보기도
하고 네이버 검색도 해보았지만 기초지식이 없는 저로서는 오류를 잡아내지 못하였습니다.
수없이 반복되는 테스트 과정중 $wr_1 값에 나누어 입력된 전화번호 값이 입력되는 것까지는
확인 할 수 있었는데요. 그 값을 DB에 입력시키는 SQL구문에서 오류가 나는 듯 합니다.
\'=\' 연산자는 타입 integer 와 char 에서는 사용할 수 없습니다
라는 오류와 관련하여 이 곳 Q&A게시판을 여러 검색어로 검색해 봤는데 그 중
--------------------------------------------------------
[re] sql mode 변경은 어떻게 하나요?
박근택 2008-05-22 08:57:46, 조회 : 96, 추천 : 6
큐브리드는 다른 데이타베이스에 비해서 형변환이나 타입 체크등이 강합니다.
즉 char 변수에 integer값을 입력하게 되면 에러가 발생합니다. 아마 일부 DB는 자동으로 알아서 형변환을 해 주는 것으로 알고 있습니다.
큐브리드는 이런 부분이 강화되어 있고 strict mode를 해제하는 방법은 현재 지원되지 않고 있습니다.
>strict mode off 하려고 합니다.
--------------------------------------------------------
라는 게시글을 봤습니다.
큐브리드 매니저로 클래스 요약정보를 확인해보니 그누보드의 여분필드들은
속성이 character varying(255)더군요.
전화번호가 숫자로만 되어있어서 그런가 했더니 전화번호 값이 아닌 문자로 넣어봐도
마찬가지였구요. 결국 찾은 게시글과는 관련이 없어보이기도 하구요.
이 오류 때문에 하루 반나절을 꼬박 소비했습니다. ㅠㅠ
도와주시면 감사하겠습니다.
|