gpt4 book ai didi

php - 当字段为空时返回所有结果

转载 作者:行者123 更新时间:2023-11-29 19:24:36 25 4
gpt4 key购买 nike

您好,我有一个下拉菜单,它将值输入到搜索表单中。搜索有两个标准。特性类别和特性子类别。当两者都被选中时,搜索效果很好。特性类别有五个选项:空白、住宅、商业、工业、农业。我想构造查询,因此如果特性类别中的值为空,它应该显示与住宅、商业、工业和农业匹配的所有结果。目前将其留空不会给出任何答案。

我尝试了两种方法,使用数组,然后构造mysql IN数组..但问题是如何在mysql中的数组或变量中搜索...

以下是html表单

<select class="searchpropertyinputs" name="property_category" id="property_category" onchange="subcategory('property_category', 'property_subcategory');">
<option value="">Property Type</option>
<option value="Residential">Residential</option>
<option value="Commercial">Commercial</option>
<option value="Industrial">Industrial</option>
<option value="Agricultural">Agricultural</option>
</select>
</br>

<select class="searchpropertyinputs" name="property_subcategory" id="property_subcategory">
<option value="">Property Subtype</option>
</select>
</br>

php

$property_category = ($_GET['property_category']);

$select = $con->prepare("SELECT * FROM tbl_property WHERE (property_category='$property_category' AND property_subcategory='$property_subcategory') LIMIT {$start}, {$perPage}");
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();

我正在尝试执行以下操作,但问题是,如果选择了值,它就是一个变量,否则如果它为空,那么它就是一个数组。因此,查询的结构是一个问题

if ($property_category == ""){
$myarray[1] = "'Residential'";
$myarray[2] = "'Commercial'";
$myarray[3] = "'Industrial'";
$myarray[4] = "'Agricultural'";
$property_category = implode(", ", $myarray);
}

$select = $con->prepare("SELECT * FROM tbl_property WHERE property_category IN ($property_category) LIMIT {$start}, {$perPage}");
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$count = $select->rowCount();

所需的结果是根据用户输入进行搜索,但如果用户未选择任何内容(空白值),则给出列中存在的所有结果。

这不起作用,没有给出任何结果

$select = $con->prepare(
"SELECT * FROM tbl_property
WHERE property_category LIKE
CASE WHEN '$property_category' = ''
THEN '%'
ELSE '$property_category'
END CASE
LIMIT {$start}, {$perPage}");
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$count = $select->rowCount();

最佳答案

这似乎有效

$search = array(
"select" => "SELECT * FROM tbl_property",
"where" => "WHERE property_category='$property_category'",
);

if (empty($property_category)) {
unset($search["where"]);
}

$search = implode(' ', $search);

$select = $con->prepare($search);
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$count = $select->rowCount();

这似乎也有效

$search =
"SELECT * FROM tbl_property " .
(empty($property_category) ? "" : "WHERE property_category='$property_category' ");

$select = $con->prepare($search);
$select->setFetchMode(PDO::FETCH_ASSOC);
$select->execute();
$count = $select->rowCount();

现在的问题是,为什么我需要这么长时间来理解和做事情......

关于php - 当字段为空时返回所有结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42241760/

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