묻고답하기
xml 쿼리에서 에러가 나는데, 원인을 알 수가 없습니다.
2013.07.16 06:55
db table에서 select하는 간단한 쿼리인데, 에러가 발생합니다. 보시고 해결책좀 알려주시면 감사하겠습니다.
왜이렇게 자잘한 에러들이 계속해서 발생하는건지, 진짜 끝도 없어 답답합니다..
1) xml 쿼리 부분
<query id="getStockList" action="select"> <tables> <table name="bw_stockprice" /> </tables> <columns> <column name="*" /> </columns> <conditions> <condition operation="in" column="isin" var="isin" /> <condition operation="less" column="last_update" var="last_update" default="curdate()" /> </conditions> </query> |
2) Model 부분 (query를 호출)
function getStockList($isin) { $args->isin = $isin; $out_gsl = executeQuery('bw_stockprice.getStockList', $args); var_dump($out_gsl); return $out_gsl; } |
3) 위 var_dump($out_gsl); 로 출력된 에러메시지
object(Object)#67 (4) { ["error"]=> int(1064) ["message"]=> string(168) "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '?) `last_update` <= ?' at line 1" ["variables"]=> array(2) { ["_query"]=> string(98) "SELECT * FROM `xe_bw_stockprice` as `bw_stockprice` WHERE `isin` in (?) `last_update` <= ? " ["_elapsed_time"]=> string(7) "0.00016" } ["httpStatusCode"]=> NULL } |
조회 쿼리는 args->last_update 가 NULL이면 curdate()가 들어가도록 하였고, args->isin 은 단일, 혹은 복수로 조회가 가능하도록 만들었습니다.
에러메시지만 보면 isin에 넘겨줄 값에 문제가 있어서 제대로 select가 안되는 것인데, $args->isin 에는 12자리의 string 값이 들어가기 때문에 에러가 발생할 이유가 없습니다.
여담이지만, 이거 외에도 Mysqli()의 prepared statement 부분에서 여러가지 다양한 에러들을 만나보고 있습니다. mysqli 의 문제일지 xe의 문제일지 알 수 없지만, 상식적으로 문제가 없는 코드를 작성했는데 에러를 내버리고 어떻게 해결해야 할 지도 알 수가 없으니 정말 답답합니다.
참고로, php 버전은 개발서버는 5.0.92 이고, 운영서버는 5.1.58 입니다. 위 문제는 개발서버에서 일어나고 있습니다.
댓글 1
-
뀰귤
2013.07.17 02:02
-
scepter83
2013.07.17 14:04
그냥 var_dump()로 보는데, debugPrint()랑 차이가 큰가요? 안써봐서 모르겠네요..
debugPrint() 사용해서 디버깅하고 계시죠??