Opensips avp_db_query не может сравнить нулевое значение - PullRequest
0 голосов
/ 06 октября 2018

Я использую 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

1 Ответ

0 голосов
/ 06 октября 2018

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

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

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

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

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

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

...