[큐브리드용] sql명령 부분에서 오류가 납니다. 정보
[큐브리드용] sql명령 부분에서 오류가 납니다.본문
안녕하세요?
큐브리드용 그누보드와 관련하여 질문글 올립니다.
< 운영환경 >
운영체제 : 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 = '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***' 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 = '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***' 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)더군요.
전화번호가 숫자로만 되어있어서 그런가 했더니 전화번호 값이 아닌 문자로 넣어봐도
마찬가지였구요. 결국 찾은 게시글과는 관련이 없어보이기도 하구요.
다른 분들 스킨에 보면 선택옵션이 바뀔때 자바스크립트가 실행되어
결과값을 보여주는 것도 하던데 비슷한 방법이나 또 다른 어떠한 방법으로
작성완료 버튼을 누르기 전에 확장된 값을 하나로 모아서 입력하는 것은 없는지...
큐브리드의 특성때문에 오류가 나는 것 같아 큐브리드쪽에 질문글을 올리긴 했는데
혹시나 하여 이 곳에도 질문글을 올립니다.
이 오류 때문에 하루 반나절을 꼬박 소비했습니다. ㅠㅠ
도와주시면 감사하겠습니다.
큐브리드용 그누보드와 관련하여 질문글 올립니다.
< 운영환경 >
운영체제 : 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 = '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***' 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 = '*** 개인정보보호를 위한 휴대폰번호 노출방지 ***' 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)더군요.
전화번호가 숫자로만 되어있어서 그런가 했더니 전화번호 값이 아닌 문자로 넣어봐도
마찬가지였구요. 결국 찾은 게시글과는 관련이 없어보이기도 하구요.
다른 분들 스킨에 보면 선택옵션이 바뀔때 자바스크립트가 실행되어
결과값을 보여주는 것도 하던데 비슷한 방법이나 또 다른 어떠한 방법으로
작성완료 버튼을 누르기 전에 확장된 값을 하나로 모아서 입력하는 것은 없는지...
큐브리드의 특성때문에 오류가 나는 것 같아 큐브리드쪽에 질문글을 올리긴 했는데
혹시나 하여 이 곳에도 질문글을 올립니다.
이 오류 때문에 하루 반나절을 꼬박 소비했습니다. ㅠㅠ
도와주시면 감사하겠습니다.
댓글 전체
큐브리드 홈페이지에 위의 질문과 관련하여 답변사항이 있었으나
시도해본 결과 오류는 없지만 DB에 값이 저장되지 않는 결과가 나왔습니다.
하여
SQL구문을 포기하고
전화번호 입력부분을 그냥 하나의 텍스트 박스에 입력하게 하고
입력되는 문자를 제한하기 위해 자바스크립트를 사용하였습니다.
그러다가...
자바스크립트는 키 입력이나 값에 따라서 바로 반응을 하는 성질에 착안,
확장필드로 나누어진 값을 자바스크립트에서 연산하여 하나로 합치고
강제적으로 input으로 다시 값을 입력해버리면 어떨까? 하여 시도를 해 보았습니다.
자바스크립트에 대한 지식도 거의 없어서
한참 헤메긴 했지만 원하던 방식의 전화번호 입력폼을 사용할 수 있게 되었습니다.
지금은 편법으로 사용하지만, 문제의 핵심인 SQL구문으로 DB에 값을 입력할 수 없는현상은
어떻게든 해결되어야 할 사항으로 보입니다.
3일간 피를 말렸는데 편법으로라도 해결이되어 다행입니다. ㅠㅠ
시도해본 결과 오류는 없지만 DB에 값이 저장되지 않는 결과가 나왔습니다.
하여
SQL구문을 포기하고
전화번호 입력부분을 그냥 하나의 텍스트 박스에 입력하게 하고
입력되는 문자를 제한하기 위해 자바스크립트를 사용하였습니다.
그러다가...
자바스크립트는 키 입력이나 값에 따라서 바로 반응을 하는 성질에 착안,
확장필드로 나누어진 값을 자바스크립트에서 연산하여 하나로 합치고
강제적으로 input으로 다시 값을 입력해버리면 어떨까? 하여 시도를 해 보았습니다.
자바스크립트에 대한 지식도 거의 없어서
한참 헤메긴 했지만 원하던 방식의 전화번호 입력폼을 사용할 수 있게 되었습니다.
지금은 편법으로 사용하지만, 문제의 핵심인 SQL구문으로 DB에 값을 입력할 수 없는현상은
어떻게든 해결되어야 할 사항으로 보입니다.
3일간 피를 말렸는데 편법으로라도 해결이되어 다행입니다. ㅠㅠ
근본적인 문제 해결하였습니다.
SQL 쿼리문 실행후
sql_commit(); 명령으로 마무리를 지어줘야 DB에 값이 입력됩니다.
ㅠㅠ
SQL 쿼리문 실행후
sql_commit(); 명령으로 마무리를 지어줘야 DB에 값이 입력됩니다.
ㅠㅠ