我正在使用表单将值发布到我的PHP类。
<?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
内部我正在使用$this->coins
检查isset function
参数的值是否为空,遗憾的是函数总是会返回错误消息,因为我会放一个 0 作为值。
<?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 :(得分:1)
我认为这应该有效:
(isset($this->coins) && $this->coins == 0)
如果没有,请发布完整错误消息
答案 1 :(得分:0)
要检查是否设置了变量,您可以使用:
isset( $this->coins );
如果变量设置为0,则返回True
;
要检查变量是否设置为零,您必须使用:
$this->coins === 0;
答案 2 :(得分:0)
由于该值来自POST
,因此它始终是一个字符串。你应该做点什么:
(isset($this->coins) && (!empty($this->coins) || $this->coins === '0'))
empty()在这种情况下不起作用。因为'0'
仍然是空的。
答案 3 :(得分:0)
在这种情况下使用!empty: -
!empty($this->coins) //true if $this->coins is neither 0, empty, or set at all';
够了。