使用PHP搜索不同表中的项目

时间:2013-02-05 22:30:26

标签: php html mysql sql

我想知道如何创建一个PHP搜索表单来执行三个表中的搜索功能:电话,制造商和操作系统。用户将搜索价格 即输入“350”将搜索手机表格中的价格字段并显示价值350及以下的所有商品或搜索“Android”将搜索 operatingsystem 表并显示所有运行Android的手机。

但是, operatingsystem 表有一个名为OSID的主键,但 phones 表有一个引用OSID的外键。当手机表包含ID而不是操作系统名称时,如何根据Android搜索结果获取结果?

3 个答案:

答案 0 :(得分:0)

希望我理解得很好......

您有一个表:phone,它具有表operating_system中的引用ID,与manufacturer相同,因此,例如,我在操作系统中有表条目如

OPERATING_SYSTEM

  1. samsung
  2. 诺基亚
  3. iPhone
  4. 和制造商

    1. 的Mac
    2. 诺基亚
    3. 所以,在我的手机中我有类似

      的东西

      id / name / operating_system / manufacturer / price

      1 / samsung galaxy / android / samsung / 300usd

      所以,如果你想显示搜索350美元以下手机的所有细节,你需要做这样的事情

      select * from operating_system, manufacturer, phones
      where phones.operating_system = operating_system.id
      and manufacturer.id = phone.manufacturer
      and phone.price < 350
      

      以后显示结果..

答案 1 :(得分:0)

那么创建第四个表来索引所有其他表的内容呢?

您可以将此表设置为具有主键(自动增量),第二个字段(0,表1; 1,表2; 2,表3)和具有引用该键的外键的第三个字段指定表中的元素。然后最后一个字段将包含一个单词。

可以将搜索查询拆分为单词并查询第四个表格。

然后选择并加入匹配,在3个原始表中查找它们......

然后在前端你可以添加一些css类,以允许用户快速过滤(jquery)并只保留某种类型的结果,这样你(她实际上)删除了误报,同时仍然允许用户改变主意。

祝你好运,

答案 2 :(得分:-1)

您可以为不同的数据提供不同的表单输入。这样,您就可以知道将哪些数据插入SQL查询的哪一部分。

尽管如此,重新发明轮子并不是2013年开发人员通常推荐的活动。您可以使用已存在的内容,例如Sphider。我确信有很多替代方案,但这是一个开始......

但有几条建议:

  • 永远不要相信用户。这包括他在搜索框中输入的内容。总是逃避它,以保护自己免受SQL注入。
  • 如果您打算使用Javascript进行客户端验证,那么也可以在服务器端进行验证。任何人都可以在他们的浏览器中禁用他们的Javascript ...