【发布时间】:2017-07-28 16:31:02
【问题描述】:
我有一个从数据库中获取数据的多复选框搜索查询。下面是代码:
HTML 代码:
<form action="search.php" method="post">
<input type="checkbox" name="cloth_color[]" value="Red" /> Red <br>
<input type="checkbox" name="cloth_color[]" value="Yellow" /> Yellow <br>
<input type="checkbox" name="cloth_color[]" value="Blue" /> Blue <br>
<input type="checkbox" name="cloth_color[]" value="Green" /> Green <br>
<input type="checkbox" name="cloth_color[]" value="Magenta" /> Magenta <br>
<input type="checkbox" name="cloth_color[]" value="Black" /> Black <br>
<input type="checkbox" name="cloth_color[]" value="White" /> White <br>
<input type="submit" value="SEARCH">
</form>
PHP 代码:
<?php
$checkbox1 = $_POST['cloth_color'];
$chk="";
foreach($checkbox1 as $chk1)
{
$chk .= $chk1;
}
if($_POST['cloth_color'] != "") {
$query = "SELECT * FROM clothings WHERE colorofcloth = '$chk'";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)) {
$colorofcloth = $row['colorofcloth'];
echo 'The cloth with ' . $colorofcloth . ' color';
echo '<br>';
}
}
?>
现在,如果我从搜索选择框中选择一个选项,我会得到查询。但是,如果我选择两种或更多颜色,我不会得到查询。非常感谢您的帮助。
附:我在 Mysql 查询中确实有多个连接,但这是我被卡住的地方,所以在这里尽可能清楚地提出问题。我还打算在启动此代码之前将 mysql 转换为 mysqli。谢谢你:)
【问题讨论】:
-
if($_POST['cloth_color'] != "")不要使用它,请与isset()联系。 -
$colorofcloth分配在哪里?您在这里使用了错误的变量,根本没有使用数组。编辑:此评论根据原帖stackoverflow.com/revisions/45378397/1 -
您发布的代码也缺少右括号。
-
我通过编辑问题和缺少的括号以及@Fred 来分配变量。这些是要处理的事情,问题是我如何通过选择多个选项来获得多个查询。
-
如果有人编辑了您的 html 页面上的某个值,他们可能会擦除您的整个数据库。您应该使用准备好的语句php.net/manual/en/mysqli.quickstart.prepared-statements.php