1

我正在使用 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 条件并检查它是否等于 1 或等于 0 时,它会起作用。

另一个问题是,如果该列具有空值而不是无效,它会继续给出以下警告。

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

1 回答 1

1

您可以使用以下方法测试NULLSQL 列值:

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

...相当于:

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

$avp(status) = NULL;鉴于该语句旨在删除 AVP 堆栈中的最高值,这是我们可以使其工作的唯一方法。

如果您声称该else语句没有在应该执行的时候执行,请给出一个最小可行的示例,以及 的输出opensips -V,可能会单独打开一个新问题

于 2018-10-06T12:16:25.677 回答