2013-02-18 125 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); 
相關問題