xml query 내용입니다.
<query id="insertLog" action="insert"> <tables> <table name="documents_log" /> </tables> <columns> <column name="document_srl" var="document_srl" notnull="notnull" /> </columns> </query>
그런데 아래와 같은 오류를 뿜어댑니다.
(
[error] => -1
[message] => Prepared statement failed: INSERT INTO `itw_documents_log`
(`document_srl`)
VALUES (?)
[variables] => Array
(
[_query] => INSERT INTO `itw_documents_log`
(`document_srl`)
VALUES (?)
[_elapsed_time] => 0.00000
)[httpStatusCode] =>
)
db 객체로 직접 $oDB->_query 쿼리 할 수도 있지만 문자열을 처리하는 보안 장치는 xe가 편리하기 때문에 가급적 xml query 를 쓰려고 합니다.
Prepared statement 쿼리는 문자열을 안전하게 보호해주지만 오류를 뿜어대니 사용하기 어렵습니다. (prepared 쿼리가 보안에 우수하긴 할거에요)
작동을 안하니 일시적으로 해당 기능을 해제 합니다.
$oDB = DB::getInstance(); $oDB->use_prepared_statements = 'N'; $output = executeQuery('itw.insertLog', $log_args); $oDB->use_prepared_statements = 'Y';
코드를 보면 알다시피 executeQuery 실행할 때만 prepared 기능을 일시적으로 비활성화 합니다.
잘 작동하더군요.
prepared 오류의 정확한 원인은 파악하지 못했지만, 일단은 xe xml query 통해 돌아가니 만족하렵니다.