我想在一个表中搜索适用于条件的行(在日期1和日期2之间,客户端ID为“X”,类别为“Y”,发布名称为“Z”)。 / p>
问题是我编写的代码需要所有字段存在,并且我希望能够让用户使用一个或两个条件进行搜索。
任何人都可以帮助.....
$DBObject->QueryText="SELECT * from printed WHERE
printed_cat_id=".$cat2["printed_cat_id"]."
and clientid=".$_SESSION["clientid"]."
and publication_id=".$_GET["pub"]."
and photo_tag like ".$tag."
and date BETWEEN '".$_GET["date1"]."' AND '".$_GET["date2"]."'";
答案 0 :(得分:0)
在您的查询中,您只需测试您的字段是否为空。
字段" pub"的示例:
and (".$_GET["pub"]." is null || publication_id=".$_GET["pub"]." )
然后,如果pub为null,则不会将其考虑在内。 你也可以测试''如果你愿意的话。
答案 1 :(得分:0)
由于您希望将某些条件设置为可选,因此您可以根据给定的GET
参数以编程方式构建查询,即:
$query = "SELECT * from printed WHERE
printed_cat_id=".$cat2["printed_cat_id"]."
clientid=".$_SESSION["clientid"];
if(isset($_GET["pub"]))
{
$query .= " and publication_id=".$_GET["pub"];
}
if(isset($tag))
{
$query .= " and photo_tag=".$tag;
}
if(isset($_GET['date1']) && isset($_GET['date2']) )
{
$query .= " and date BETWEEN '".$_GET["date1"]."' AND '".$_GET["date2"]."'";
}
$DBObject->QueryText=$query;
这样,只会在mysql
query
另一方面(在您的问题中不明确)如果您只想要至少有一个条件成立,则可以在查询中使用OR
而不是AND
来查找这些部分< / p>