我创建了一个查询 MySQL 数据库并显示结果的表单。现在我希望能够过滤我的结果。我有:
<input type="checkbox" name="multi_cif[]" value="<?php echo $g1 ?>"><font size="1" face="Arial, Helvetica, sans-serif">
在通过 foreach 显示所有结果的输出中,变量 $g1 是 MySQL 查询值(地址)。我希望能够单击结果旁边的这些复选框,因此当用户单击标有“过滤器”的按钮时,仅显示选中的结果。
到目前为止,我的代码如下:
<?PHP
if (isset($_POST['Submit2']))
{
$stmt = $dbh->prepare('SELECT * FROM CIF WHERE address LIKE ?');
$stmt->execute(array("%$_POST[multi_cif]%"));
//$stmt->execute(array(":term" => "%" . $_POST["multi_cif"] . "%"));
//$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
/*while ($results = $stmt->fetch()) //WILL UNCOMENT AND ADD OR LIKE AFTER SINGLE QUERY WORKING
{
echo $results['address'];
echo $results['alternativeid'];
}*/
print_r($_POST);
$results = $stmt->fetch();
echo $results['address'];
echo $results['alternativeid'];
}
?>
注释掉的东西是我尝试过的其他东西。我非常接近我的结果。以下代码的结果以:
[multi_cif] => Array ( [0] => test.13ann.com [1] => testfortestltd444557.com.tw ) ) coralarray.ruhttp://mirror3.malwaredomains.com/files/domains.txt
很明显,“数组”是作为一个值传递的,而不是分配给 multi[] 的所需地址。有人可以解释为什么会这样并帮我解决吗?从昨天开始,我是 PDO 的新手,但我选择使用它并重新编写我的其他语句来实现准备好的语句,而不是动态地构建它们。提前致谢!
编辑:我接受了布拉德的一些建议,但保留了声明,没有额外的“或地址 LIKE ?” 就像现在我只点击一个复选框但仍然得到“数组”而不是“test.13.ann.com”一旦我弄清楚为什么“数组”与值我将添加额外的或——感谢布拉德指出!