我有一个表单,然后在第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语句中以选择具有该名称的列字段的所有记录。 / p>
foreach($_POST['check_list'] as $check) {
echo $check . '<br>';
}
让我们在一个名为stuff的表中说这些字段
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,因为&#34;某些东西&#34;在第一个记录的first_title列中,还有一个&#34;还有一个&#34;在第二个记录的second_title中,没有检查到第三个记录。
我希望我尽可能多地提供详细信息。如果您需要进一步解释,请告诉我。
答案 0 :(得分:4)
使用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);
答案 1 :(得分:1)
尝试使用代码中的条件
<?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;
?>