搜索一个表时的多个条件

时间:2014-10-26 08:28:06

标签: php mysql search

我想在一个表中搜索适用于条件的行(在日期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"]."'";

2 个答案:

答案 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>