繁体   English   中英

如何根据选中的复选框选择多个mysql记录?

[英]how do i select multiple mysql records based on checked checkboxes?

在第1页上,我有一个表单,然后在第2页上,这是处理器文件,我想根据第1页上选中的复选框选择记录。

<form action="output.php" method="post">
<input type="checkbox" id="" class="" name="check_list[]" value="something" />
<input type="checkbox" id="" class="" name="check_list[]" value="something else" />
<input type="checkbox" id="" class="" name="check_list[]" value="yet another thing" />
<input type="checkbox" id="" class="" name="check_list[]" value="one more thing" />
<input type="checkbox" id="" class="" name="check_list[]" value="some name" />
<input type="checkbox" id="" class="" name="check_list[]" value="some other name" />
<input type="submit" value="Submit" name="submit">
</form>

下面的foreach可以显示已检查的所有内容的所有值,但是我不知道如何将其进一步应用到我的sql select语句中,以选择具有该名称的列字段的所有记录。

foreach($_POST['check_list'] as $check) { 
    echo $check . '<br>';  
}

可以说在一个名为“东西”的表中有这些字段

id, first_title, second_title

所以我想做以下事情,但是显然这不是编写它的方法。 这是我需要帮助的部分。

SELECT * FROM stuff WHERE first_title = $check or second_title = $check

让我们进一步说这些记录存在于表中...

id    first_title          second_title
-----------------------------------------
1     something            something else
2     yet another thing    one more thing
3     some name            some other name

然后假设已选中以下复选框:

<input type="checkbox" id="" class="" name="check_list[]" value="something" />
<input type="checkbox" id="" class="" name="check_list[]" value="one more thing" />

所以我想发生的事情是我的select语句选择记录1和记录2而不是记录3,因为“某物”在第一条记录的first_title列中,而“另一件事”在第二条记录的second_title中记录,并且没有检查第三记录中的任何内容。

我希望我能提供所需的详细信息。 让我知道是否需要进一步说明。

使用SQL IN运算符测试列是否在值列表中。 这是用MySQLI编写的方法:

$in_str = implode(', ', array_map(function($title) use ($con) {
    return "'" . $con->real_escape_string($title) . "'";
}, $_POST['check_list']));

$sql = "SELECT * FROM stuff WHERE first_title IN ($in_str) OR second_title IN ($in_str)";

$result = $con->query($sql);

在代码中尝试这种动态的where条件

   <?php
    $arr_where = array();

    foreach($_POST['check_list'] as $check) { 
        $arr_where[] = " first_name='$check' OR last_name='$check' ";
    }

    $where_text = implode("OR", $arr_where);

    $sql = "SELECT * FROM stuff WHERE ".$where_text;
    ?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM