我有这个代码,如果满足某些条件,它应该插入一些数据。如果数据是字符串,条件逻辑的前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);
}
有任何解决方法吗?
答案 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";
参考文献: