2013-02-18 89 views
0

我需要检查一个字段是否包含任何数值,如果是 - 它将返回脚本。PHP检查(POST)中的变量是否包含任何数值

这是我的脚本

if ($name != null && $age != null) { 
    if (!preg_match("/^[a-z]$/", $param)) { 
     echo 'You cannot use numbers for your name lol!'; 
     return; 
    } 
    if (!is_numeric($age)) { 
     echo 'You must use numbers for your age!'; 
     return; 
    } 
    mysql_select_db("jony", $connectMysql); 
    $sql="INSERT INTO person (name, age) VALUES ('$_POST[name]','$_POST[age]')"; 

    if (!mysql_query($sql,$connectMysql)) 
     die('MySQL problem:'.mysql_error()); 
     mysql_close($connectMysql); 
     header('location: http://localhost/index.php.php'); 
} else { 
    echo 'Fields are empty!'; 
    return; 
} 

我用它来检查,如果字段“$名”是数字,如果是,它会返回它:

if (is_numeric($name)) { 
     echo 'You cannot use numbers for your name lol!'; 
     return; 
    } 

它正常工作,如果我只把数字放在现场。

但是,如果我包含数字+字符,它将继续代码并忽略返回。 这是怎么回事?我做错了什么?谢谢!

+0

因为[ 'is_numeric()来'](http://www.php.net/manual/en/function.is-numeric.php)认为不同事物的_lots_是数字字符串,除了整数。如果你只想要整数,使用'ctype_digit()'或者正则表达式'/^[\ d] + $ /' – 2013-02-18 01:38:13

+0

它仍然和ctype_digit()一样,不知道为什么。 – user1902133 2013-02-18 01:39:54

+0

第一次测试中的'$ param'有什么用?这是从哪里来的? – 2013-02-18 01:42:32

回答

0

你可以这样做,例如:

if (preg_match('#[0-9]#',$name)){ 
    echo 'You cannot use numbers for your name lol!'; 
    return; 
} 
0

你可以测试它here

尝试

preg_match('/^[a-z]+$/', $name); 

,而不是

preg_match('/^[a-z]$/', $name); 
相关问题