在MySQL中,如何从三个字段的搜索表单中检索多个值?

时间:2009-04-18 14:28:05

标签: php mysql

我有两张桌子:

  1. 客户
  2. 城市
  3. 然后在搜索表单中我有三个字段:

    1. 用于填写客户名称的文本输入表单
    2. 用于选择要搜索的城市(表格城市)的选择框
    3. 另一个选择框,用于选择用户想要搜索的主要业务(业务包含在客户表中)
    4. 根据表单字段的选择,它将从两个表中进行搜索。

      我正在考虑根据用户的选择进行多个SQL查询。

      问题是,用户可能不会使用客户端的名称填写输入表单,也可能会填写输入表单,但不会选择城市等。

      那么根据用户的选择,我必须做多个ifs来显示多个sql查询吗?也许我有一个不那么混乱的解决方案......

2 个答案:

答案 0 :(得分:2)

也许您的数据库结构可以更改以帮助您。例如,我假设您在城市和客户之间存在关系。听起来企业就像“技术”或“搜索”,在这种情况下,您可以拥有多个具有相同业务的客户吗?可能值得将企业移植到一个单独的表中,然后再参考这些表。然后你可以有一个简单的查询,例如:

SELECT *
FROM clients
WHERE clients.city = {form result: cities.id}
AND clients.business = {form result: businesses.id}
ORDER BY clients.name
LIMIT 0, 30

现在假设用户没有填写其中一个字段(例如city),你有两个选择:强制他们通过验证用户输入填充它或将其用作通配符,在这种情况下你可以删除{{来自查询的1}}子句。假设您从“城市”中提供WHERE clients.city<select>选项值。

以编程方式我在这种情况下构建查询:

id

过滤器是您选择的过滤方法。

答案 1 :(得分:1)

只需使用您的条件查询数据库。如果客户/城市实际存在,那么它们将显示,否则查询将返回空集。这样简单,无需验证其中任何一个的存在 - 用户应该足够聪明,以便能够提出现有的城市名称。

你唯一需要做的就是mysql_real_escape_string()。