PHP输入不符合条件的if条件

时间:2018-10-04 14:35:40

标签: php

正在将复选框的值保存在数据库中。我有3个变量($user_id, $checkbox_id, $checked),但只有第3个变量很重要。

$checked是true还是false表示用户是否选中了该复选框。以下代码只是相关的内容:

$checked = $_POST['checked'];

$check_interests_query  = "SELECT All interests from interests Table";
$run_query = mysqli_query($connect, $check_interests_query);

$status_1 = $checked;

if(mysqli_num_rows($run_query) == 0 && $checked == true){
   $in = "first";
   //do stuff
}

else if(mysqli_num_rows($run_query) != 0 && $checked == true){
  $status_2 = $checked;
  $in = "second";
  //do stuff
}

//Other conditions

所以现在我选中并取消选中同一复选框,并得到以下结果。

选中复选框时:

$checked = true
$in = "second"
$status_1 = true
$status_2 = true

取消选中复选框时:

$checked = false
$in = "second"
$status_1 = false
$status_2 = false

因此$checked在文档开始时为false,在if-condition之前为false,在输入条件后为false。尽管条件明确指示仅在$checked为真时才播放,但它仍进入上述条件。

我想念什么?

编辑:var_dump($_POST)给出以下内容

选中复选框时:

array(3) {
  ["checked_id"]=>
  string(1) "3"
  ["checked"]=>
  string(4) "true"
  ["user_id"]=>
  string(1) "6"
}

取消选中时:

array(3) {
  ["checked_id"]=>
  string(1) "3"
  ["checked"]=>
  string(5) "false"
  ["user_id"]=>
  string(1) "6"
}

1 个答案:

答案 0 :(得分:2)

您获得的POST参数是字符串。

如果POST变量中的字符串为“ true”或“ false”,则应json_decode将其转换为布尔值。

更改第一行:

$checked = json_decode($_POST['checked']);

或者,为了更加安全:

$checked = $_POST['checked'] == "true";

如果POST变量中包含字符串“ true”,则最后一个将$checked设置为true。