Opensips avp_db_query не может сравнить нулевое значение

Я использую avp_db_query для получения строки моей таблицы, иногда одно значение поля равно нулю. Но когда я использую условие if, оно не следует и движется дальше.

avp_db_query("select status from orders where id = 1", "$avp(status);")

Теперь, если я напишу условие

if($avp(status)==1){
   do success
 } else {
   do failure
   exit();
 }

Вышеупомянутое условие не работает в состоянии сбоя и продолжается, но когда я ставлю два условия if и проверяю, равно ли оно единице или равно 0, тогда оно работает.

другая проблема заключается в том, что если этот столбец имеет нулевое значение, то ничего не работает, и он продолжает выдавать следующее предупреждение.

WARNING:core:comp_scriptvar: invalid EQUAL operation: left is 
VARIABLE_ELEMENT/STRING_VAL, right is NUMBER/NO_VAL

person Kamal Panhwar    schedule 06.10.2018    source источник


Ответы (1)


Вы можете проверить значения столбца NULL SQL с помощью:

if ($avp(status) == "<null>")

... что эквивалентно:

if ($(avp(status)[0]) == "<null>")

Это был единственный способ заставить это работать, учитывая, что оператор $avp(status) = NULL; предназначен для удаления самого верхнего значения в стеке AVP.

Если вы утверждаете, что оператор else не выполняется, когда должен, приведите минимально жизнеспособный пример вместе с выводом opensips -V, возможно открытие новой проблемы отдельно.

person Liviu Chircu    schedule 06.10.2018
comment
Спасибо, хорошо, поставлю еще один пост для условий if и еще if. - person Kamal Panhwar; 07.10.2018