2016-02-11 81 views
0

我正在使用表单将值发布到我的PHP类。检查变量是否为0而不是空

<?php 
    if(!empty($_POST)){ 
     require_once('../../handling/admin_add_user.php'); 

     $add_username = $_POST['add_username']; 
     $add_email = $_POST['add_email']; 
     $add_gender = $_POST['add_gender']; 
     $add_server = $_POST['add_server']; 
     $add_coins = $_POST['add_coins']; 

     $user_add = new admin_add_user($add_username, $add_email, $add_gender, $add_server, $add_coins); 
     $user_add_response = $user_add->class_handler(); 
     echo $user_add_response; 
    } 
?> 

而且功能class_handler IM检查是否为$this->coins参数的值使用isset function可悲的功能将始终返回错误信息柜面我会把一个作为值为空内。

<?php 
    class admin_add_user extends database { 
     function __construct($username, $email, $gender, $server, $coins){ 
      $this->username = $username; 
      $this->email = $email; 
      $this->gender = $gender; 
      $this->server = $server; 
      $this->coins = $coins; 
     } 

     function add_user(){ 
      $this->connect(); 
      $this->execute_query("INSERT INTO Users (username, email, gender, server, active, activate_key, coins) VALUES ('" . $this->username . "', '" . $this->email . "', '" . $this->gender . "', '" . $this->server . "', 1, 0, " . $this->coins . ")"); 
     } 

     function class_handler(){ 
      if(!$this->username){ 
       return 'Please enter a username.'; 
      }else if(!$this->email){ 
       return 'Please enter a email.'; 
      }else if(!$this->gender){ 
       return 'Please select a gender.'; 
      }else if(!$this->server){ 
       return 'Please select a server.'; 
      }else if(isset($this->coins)){ 
       return 'Please enter a coin value. eG: 0'; 
      }else{ 
       $this->add_user(); 
       return 'Succesfull added the following account to the database: ' . $this->username; 
      } 
     } 
    } 
?> 

我怎么能管理,以检查是否$this->coins变量不是空的,但可能包含INT 0

回答

0

要检查变量设置,你可以使用:

isset($this->coins); 

返回True另外,如果变量设置为0;

要检查变量设置为零,你必须使用:

$this->coins === 0; 
+0

==也做了这个把戏,虽然===不错,它也会检查数据类型.. :) – Arshi

+0

@Ashhi'=='return True也是变量是空的或者不存在。 – fusion3k

1

我认为这应该工作:

(isset($this->coins) && $this->coins == 0) 

如果没有,那么请发表您的完整的错误信息

0

由于值来自POST它始终是一个字符串。你应该这样做:

(isset($this->coins) && (!empty($this->coins) || $this->coins === '0')) 

empty()在这种情况下不起作用。因为'0'仍然表示空。

0

使用!empty在这种情况下: -

!empty($this->coins) //true if $this->coins is neither 0, empty, or set at all'; 

就足够了。