XML Query 에서 operation="notnull", operation="null" 조건절 처리 관련 문의 드립니다.
XML 정의
<conditions>
<condition operation="notnull" column="anno_srl" var="anno_not_null" pipe="and" />
<condition operation="null" column="anno_srl" var="anno_null" pipe="and" />
</conditions>
PHP argument 세팅
if($anno_yn =='Y')
{
$args->anno_not_null = 1;
}
if($anno_yn =='N')
{
$args->anno_null = 1;
}
위와 같이 정의되어 있고 Debug 로그를 보니 SQL 구문 자체는 아래와 같이 정상적으로 parsing 되는 것 같습니다.
WHERE `anno_srl` is not null
그런데 아래와 같이 경고 메시지가 뜨고 결과값이 Return 되지 않네요.
01. Warning: mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters in prepared statement
- C:\APM\nginx\html\classes\db\DBMysqli.class.php:110
- C:\APM\nginx\html\classes\db\DB.class.php:1074
- C:\APM\nginx\html\classes\db\DBMysql.class.php:902
- C:\APM\nginx\html\classes\db\DBMysql.class.php:773
- C:\APM\nginx\html\classes\db\DBMysqli.class.php:370
- C:\APM\nginx\html\classes\db\DB.class.php:614
- C:\APM\nginx\html\classes\db\DB.class.php:517
- C:\APM\nginx\html\common\legacy.php:144
혹시 이런 경험 해보신 분 계신지요?
operation이 null이나 notnull인 경우에는 var를 넣을 수 없습니다. is null 또는 is not null 조건이 무조건 추가되고, var가 있으면 에러가 날 것입니다. 따라서 변수 값이 있을 때만 is null이나 is not null 조건을 붙이도록 할 수는 없습니다.
변수 값이 있는지에 대한 조건과 is null 조건을 group으로 묶어서 (변수 값이 있음 AND 컬럼 is null) 이렇게 구현할 수는 있을지도 모르겠네요. 만약 이것도 안 되면 쿼리를 2가지로 분리해야지요.