gpt4 book ai didi

php - 使用 php 从 mysql 数据中过滤多个产品

转载 作者:行者123 更新时间:2023-11-29 02:18:03 24 4
gpt4 key购买 nike

我正在尝试使用 PHP 过滤和显示来自 mysql 的数据。以下是我的输入过滤器。

<form id="search_form">
<div class="well">
<h4 class="text-info">Search by Size</h4>
<input value="32" class="sort_rang" name="size[]" value="New" type="checkbox"> 32
<input value="36" class="sort_rang" name="size[]" value="fashion" type="checkbox"> 36
<input value="38" class="sort_rang" name="size[]" value="New" type="checkbox"> 38
</div>

<div class="well">
<h4 class="text-info">Search by price</h4>
<input value="950" class="sort_rangn" name="price[]" value="New" type="checkbox"> 950
<input value="1024" class="sort_rangn" name="price[]" value="fashion" type="checkbox"> 1024
<input value="500" class="sort_rangn" name="price[]" value="New" type="checkbox"> 500
</div>
</form>

现在我们有两个过滤器 size 和 price 都在数组中获取并在 mysql 中搜索。

$sql="SELECT * FROM products";
extract($_POST);

if(isset($size))
$sql.=" WHERE size IN (".implode(',', $size).")";

if(isset($price))

$sql.=" WHERE (price IN (".implode(',', $price)."))";

$all_row=$db->query($sql);

它工作正常,但只有一个条件有效 - 尺寸或价格,我使用的是一个表名 - 产品。

最佳答案

您可以尝试以下代码片段:

    $sql="SELECT * FROM products";
extract($_POST);

if(isset($size) && isset($price))
$sql.=" WHERE size IN (".implode(',', $size).") OR price IN (".implode(',', $price).")";
else if(isset($size))
$sql.=" WHERE size IN (".implode(',', $size).")";

else if(isset($price))

$sql.=" WHERE (price IN (".implode(',', $price)."))";

$all_row=$db->query($sql);

尺寸或价格过滤成功。如果你想匹配它们,请使用 AND而不是 OR在第一个if声明

注意:在您的代码中,如果两个变量都设置在一个案例中,那么您将遇到语法错误。这里来使用IF ELSEIF链。

假设两个$price$size设置变量。那么你的$sql变量将同时受到 IF 的影响声明。然后你最终生成了query将有两个 where 子句,它们会因语法错误而产生错误。您生成的查询将大致如下所示:

SELECT .... WHERE size IN (....) WHERE price IN (...) ... (语法错误)

关于php - 使用 php 从 mysql 数据中过滤多个产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36244473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com