묻고답하기
xe 1.5 업그레이드 후, 모듈의 query xml
2012.02.16 17:00
xe 1.4 환경에서
자체적으로 모듈을 몇가지 사용하여 이용하고 있었습니다.
1.5로 업데이트 하고 난 뒤 일부 모듈이 작동하지 않아 몇일동안 원인을 찾다보니
이상하게 select, delete 관련된 query는 잘 작동하지만
insert, update query가 잘 작동하지 않았습니다.
모듈상에서는 문제가 없고 잘 작동하는 것처럼 보이지만
db에는 실제로 값이 들어가거나 업데이트가 되지 않았습니다.
모듈의 controller.php 에서 executeQuery하는 부분마다
$this->stop($output->variables[_query]);
이런식으로 출력을 해보면서 확인해보니
UPDATE `xe_dev_pay` as `dev_pay`
SET `pay` = 580000, `ready` = 20000, `name`=`김상수`, `bank`=`우리`, `account`=0000
WHERE `id`='abcd'
이런식으로 실행되고 있었고, 이럴 경우 unknown column `김상수` in field list 라는 에러가 나면서 mysql로 들어가지지가 않네요
에러가 나지 않으려면
set 절에서는 name과 bank에 들어가는 값의 앞 뒤로 붙은 ` 기호대신에 ' 기호가 붙어야 하는데 저 기호가 계속 붙는 이유가 뭔가요?
이상하게 where 절에서는 '기호가 제대로 잘 붙습니다.
따라서 insert와 select는 잘 작동하지만 저 기호때문에 update와 insert를 하는 쿼리들이 동작하지 않는 데요ㅜ
모듈의 쿼리의 xml 내용은
<query id="updatePay" action="update">
<tables>
<table name="dev_pay" />
</tables>
<columns>
<column name="pay" var="pay"/>
<column name="ready" var="ready"/>
<column name="name" var="name"/>
<column name="bank" var="bank"/>
<column name="account" var="account"/>
</columns>
<conditions>
<condition operation="equal" column="id" var="uid" notnull="notnull" />
</conditions>
</query>
이렇습니다.
이상하게 name과 bank 등 문자열 변수에 기호가 붙어서 에러를 만드는데
사실 문자열 변수인데 숫자를 입력했더니 기호가 붙지 않고 잘 작동합니다.
1.4에서는 잘 작동하던 것이 1.5에서 에러가 나는 원인이 무엇인가요???
한글 인코딩 문제인가요?
혹시 쿼리 xml 파일이 아니라
제가 만든 모듈이나, filter에서 문제가 생긴 것이라면
이걸 확인해서 디버깅해볼 방법이 뭐가 있을까요???
제발 도와주세요ㅜㅜ