不能在条件逻辑中执行else

时间:2016-01-30 21:55:20

标签: php mysql

我有这个代码,如果满足某些条件,它应该插入一些数据。如果数据是字符串,条件逻辑的前3个部分完美地工作似乎不会执行。

总之,如果$ USSD_STRING是一个整数是(12345),则查询执行完美。但如果在价值的开头有一封信,即(AA12345),其他似乎不起作用。

我试过这个:

elseif (is_string("$USSD_STRING")) {
$sql = "INSERT INTO userlevel SET phone_number = '$MSISDN', ussd_string = '$USSD_STRING', user_level = '$level', session_id = '$SESSION_ID', mno_id = '$MNOID', partner_id = '$PartnerId'";
            $result=mysql_query($sql);
}

但它也不起作用。

if ( $USSD_STRING <=0) {
    }
    elseif ( $USSD_STRING ==1) {
        $sql = "INSERT INTO userlevel SET phone_number = '$MSISDN', ussd_string = '$USSD_STRING', user_level = '$level', session_id = '$SESSION_ID', mno_id = '$MNOID', partner_id = '$PartnerId'";
        $result=mysql_query($sql);
    }
    elseif ( $USSD_STRING ==2) {
        $sql = "INSERT INTO userlevel SET phone_number = '$MSISDN', ussd_string = '$USSD_STRING', user_level = '$level', session_id = '$SESSION_ID', mno_id = '$MNOID', partner_id = '$PartnerId'";
        $result=mysql_query($sql);
    }
    else {
        $sql = "INSERT INTO userlevel SET phone_number = '$MSISDN', ussd_string = '$USSD_STRING', user_level = '$level', session_id = '$SESSION_ID', mno_id = '$MNOID', partner_id = '$PartnerId'";
        $result=mysql_query($sql);
        }

有任何解决方法吗?

1 个答案:

答案 0 :(得分:2)

我敢打赌,你在引号中声明你的变量,你没有在你的问题中发布的内容。

然而,我可能是错的。但是,您可以在下面找到一些选项。

以下(以及作为示例)

$USSD_STRING = "12345";

$USSD_STRING = $_POST['var'];

即使技术上它是一个整数(用引号设置),它仍然会被is_string()函数解释为一个字符串。

  

“任何解决方法?”

  • 是的,你有几个。

使用以下内容将使用is_string()函数限定为不是字符串。

$USSD_STRING = 12345;

最好使用ctype_digit()

$USSD_STRING = "a12345"; // fail

以下内容将作为整数传递,即使它在引号

$USSD_STRING = "12345"; // pass as an integer

if (ctype_digit($USSD_STRING)) {
...
}

如果引入信函,则以下内容将失败

$USSD_STRING = "a12345"; // fail. It contains a letter

if (ctype_digit($USSD_STRING)) {
...
}

您可以使用的另一个选项是FILTER_VALIDATE_INT

if(filter_var($USSD_STRING, FILTER_VALIDATE_INT))

失败的地方
$USSD_STRING = "a12345";

但传递为(甚至在引号内):

$USSD_STRING = "12345";

参考文献: