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

혹시 이런 경험 해보신 분 계신지요? 

 

  • profile

    operation이 null이나 notnull인 경우에는 var를 넣을 수 없습니다. is null 또는 is not null 조건이 무조건 추가되고, var가 있으면 에러가 날 것입니다. 따라서 변수 값이 있을 때만 is null이나 is not null 조건을 붙이도록 할 수는 없습니다.

    변수 값이 있는지에 대한 조건과 is null 조건을 group으로 묶어서 (변수 값이 있음 AND 컬럼 is null) 이렇게 구현할 수는 있을지도 모르겠네요. 만약 이것도 안 되면 쿼리를 2가지로 분리해야지요.

  • profile profile
    네.. 답변 감사합니다^^
    이런 부분에 대한 유연성이 아쉽네요.