PHP在不满足条件的情况下进入if条件
在数据库中保存复选框的值。我有三个变量(PHP在不满足条件的情况下进入if条件,php,Php,在数据库中保存复选框的值。我有三个变量($user\u id,$checkbox\u id,$checked),但只有第三个变量很重要 $checked为true或false,表示用户是否选中或取消选中复选框。以下代码只是相关的内容: $checked = $_POST['checked']; $check_interests_query = "SELECT All interests from interests Table"; $run_query = mysqli_query($con
$user\u id,$checkbox\u id,$checked
),但只有第三个变量很重要
$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
array(3) {
["checked_id"]=>
string(1) "3"
["checked"]=>
string(4) "true"
["user_id"]=>
string(1) "6"
}
取消选中复选框时:
$checked = true
$in = "second"
$status_1 = true
$status_2 = true
$checked = false
$in = "second"
$status_1 = false
$status_2 = false
array(3) {
["checked_id"]=>
string(1) "3"
["checked"]=>
string(4) "true"
["user_id"]=>
string(1) "6"
}
因此,$checked
在文档开始时为false,在if条件之前为false,在输入条件之后为false。它进入所述条件,尽管该条件明确指示仅在$checked
为真时播放
我错过了什么
编辑:var\u dump($\u POST)
给出了以下内容
选中复选框时:
$checked = true
$in = "second"
$status_1 = true
$status_2 = true
$checked = false
$in = "second"
$status_1 = false
$status_2 = false
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"
}
您获得的POST参数是字符串 如果POST变量中的字符串为“true”或“false”,则应
json\u对其进行解码
以将其转换为布尔值
将第一行更改为:
$checked = json_decode($_POST['checked']);
或者,为了安全起见:
$checked = $_POST['checked'] == "true";
如果POST变量中包含字符串“true”,则最后一个将把
$checked
设置为true。您的原始$\u POST
值是什么?var\u dump是您的朋友:)不难判断未选中的复选框不是false。还没定检查=
和==
$\u POST
值之间的差异是字符串。试试这个有趣的例子var\u dump('false'==true)
查看结果:)添加到此答案:检查==“true”
也可以