PHP / MySQL在一个表中搜索两个字段

时间:2011-06-16 20:58:11

标签: php mysql search searchbar

我正在构建我的第一个PHP / MySQL站点,我想从数据库中的一个表中的两个字段返回搜索结果 - Catagory和Location(表中总共有15个字段,但只有搜索所需的两个。)

每个选项都有一个下拉菜单,它会在每个字段中列出固定数量的选项 - 例如,可能会有15个左右的位置,以及7个或8个Catagories。

我希望用户能够从一个或两个下拉菜单中选择一个项目,点击“搜索”或“@Go”按钮,然后显示结果。

如上所述,我是PHP / MySQL的新手,所以如果我的问题有点“简单”,我很抱歉,我希望有人可以指出我正确的方向。

由于 丹

编辑:

Brad,Conner,到目前为止我还没有任何关于搜索查询细节的信息,我只是开始研究如何做到这一点,因此在我的问题中完全缺乏代码!

但是为了尝试更具体,我想要返回结果的唯一字段是Location和Job Catagory - 这是我的表中大约15个已经填充了固定术语的两个字段 - 例如,Location可能有伦敦,曼彻斯特,利兹和Catagory可能有行政,管理,文职等 - 访客没有选择输入新术语,只能从预先安排的项目的下拉菜单中选择。

我表格中的其他字段与搜索无关(工资,公司,联系电子邮件等),所以......我想我只需要两个查询,如果你只发一个查询,也可以显示结果(例如,你不会对工作地点感到困扰,只是专业,你仍然可以找到所有的结果,并决定你是否想要重新安置)。那更好还是更有帮助?

到目前为止,感谢您的帮助。 丹

3 个答案:

答案 0 :(得分:1)

用户输入搜索查询,您是否要从表中选择包含该查询或与该查询完全匹配的行?如果是这样的话,比如

如果category包含$search_query

SELECT category, location 
FROM table 
WHERE concat(' ', category, ' ') LIKE '%$search_query%'

如果是exact匹配,您可以将其用于条件:

WHERE category = '$search_query'

我可能不合适,你需要像布拉德那样说明

答案 1 :(得分:1)

Dan你需要动态构建你的sql语句。下面是一段简单的代码来展示我的意思。总是小心逃避用户数据以防止sql注入。

if ( isset($_POST['go']) ){
      $location = $_POST['location'];
      $category = $_POST['category'];
      $sql = "SELECT * FROM table ID IS NOT NULL ";

      if ( $location !="" ){
           $sql .= " AND location = " . $location;
      }

      if ( $category !="" ){
           $sql .= " AND category = " . $category;
      }

}

答案 2 :(得分:0)

如果没有关于您的表格结构和相关数据的任何详细信息,基本知识可能会像:

SELECT ...
FROM ...
WHERE (field1 = $location_option) or (field2 = $category_option)