PHP中的!is_numeric函数不接受NULL VALUE

时间:2012-08-08 07:55:48

标签: php mysql

我正在尝试验证某个输入,其中用户只能输入整数值...否则将执行错误消息

$user_mcc = $_REQUEST['mobile_countrycode'];
if($user_mcc == ""){
    is_numeric($_REQUEST['mobile_countrycode']);
}

if (!is_numeric($_REQUEST['mobile_countrycode'])){

    echo '<script type="text/javascript">alert("Not a numeric value!\n\nMake sure that your country codes, area codes\nand mobile/fax/phone numbers are correct! \n"); return true;</script>';
    echo '<script type="text/javascript">history.back();</script>'; 
    die('' . mysql_error());



}

我尝试了很多功能,例如emptyis_null== NULL== 'NULL等等......但它没有用。

如果我将字符串值放入输入文本字段,例如我输入... "Banana",则可以执行上面的!is_numeric函数,因为输入的值为FALSE并且不是数值。

但是,每当我将输入字段留空NULL时,!is_numeric函数仍然可以执行,就像它将NULL值识别为非数值一样。如果输入值为!is_numeric,我该怎么做才能绕过NULL函数。谢谢。

PS:我已经尝试了!is_int!is_integerctype_digit,但结果相同,它不接受 NULL 价值观。

4 个答案:

答案 0 :(得分:6)

这可能是因为null 不是数值。它是无效的;它什么都没有,它肯定不等于整数0.如果你想检查一个数值,或者为null,那么这正是你应该做的:

if( $yourvalue !== null && !is_numeric( $yourvalue ) ) {
}

答案 1 :(得分:0)

我认为,它可以使用此代码:

$isNumeric = false;
// Verify your var exist
if (isset($_REQUEST['mobile_countrycode'])){    
    // if var exist, you create $user_mcc
    $user_mcc = $_REQUEST['mobile_countrycode'];

    // test empty and null values [ == if(!empty($user_mcc) ]
    if (("" != $user_mcc) && ( NULL != $user_mcc)){
        // if value is not NULL and not empty test if value is numeric...
        if (is_numeric($user_mcc)){
            // Your value is Numeric
            $isNumeric = true;
        }
    }
}

之后,如果您的值不是数值,则可以使用$ isNumeric boolean:

if (!$isNumeric){ // [ == if ( $user_mcc is not numeric ^^ ) ]
    echo '<script type="text/javascript">alert("Not a numeric value!\n\nMake sure that your country codes, area codes\nand mobile/fax/phone numbers are correct! \n"); return true;</script>';
    echo '<script type="text/javascript">history.back();</script>'; 
    die('' . mysql_error());
}

更多样本或详细信息,您可以阅读Php.net的this页面(这些样本很多)

答案 2 :(得分:0)

这样做:

function is_numeric_not_null($var) {
    return(($var != "") && ($var != NULL) && is_numeric($var));
}

$user_mcc = $_REQUEST['mobile_countrycode'];

if (!is_numeric_not_null($user_mcc)){

    echo '<script type="text/javascript">alert("Not a numeric value!\n\nMake sure that your country codes, area codes\nand mobile/fax/phone numbers are correct! \n"); return true;</script>';
    echo '<script type="text/javascript">history.back();</script>'; 
    die(mysql_error());
}

答案 3 :(得分:0)

这样做:

$user_mcc = empty($_REQUEST['mobile_countrycode']) ? null : $_REQUEST['mobile_countrycode'];

if (null === $user_mcc || !is_numeric($user_mcc)) {
    // Not a numeric value
}