我使用avp_db_查询来检索表行,有时一个字段值为空。但当我使用if条件时,它不会跟随并继续。

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

如果我写条件
if($avp(status)==1){
   do success
 } else {
   do failure
   exit();
 }

上面的条件对故障状态不起作用并继续,但是当我放置两个if条件并检查它是否等于1或等于0时,它就起作用了。
另一个问题是,如果此列的值为空,则不起作用,它将继续发出以下警告。
WARNING:core:comp_scriptvar: invalid EQUAL operation: left is
VARIABLE_ELEMENT/STRING_VAL, right is NUMBER/NO_VAL

最佳答案

您可以使用以下命令测试NULLsql列值:

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

…相当于:
if ($(avp(status)[0]) == "<null>")

考虑到$avp(status) = NULL;语句的目的是删除avp堆栈中最上面的值,所以这是唯一可以让它工作的方法。
如果您声称else语句在应该执行的时候没有执行,请给出minimally viable example,以及opensips -V的输出,可能会分别打开一个新的issue

10-08 06:38