2010-05-17 92 views
0

我希望能够使用搜索字符串中的值从url中搜索MySQL表,然后将结果显示为XML输出。正在搜索表MySQL&PHP

我想我已经得到了格式并从搜索字符串中声明了变量。

我遇到的问题是搜索整个表格,我查看了以前的答案,他们似乎都必须声明表中的每一列才能搜索。

因此,例如,我的数据库布局如下:

**filesindex** 
-filename 
-creation 
-length 
-wall 
-playlocation 

首先将以下是适当的:

$query = "SELECT * FROM filesindex WHERE filename LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE creation LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE length LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE wall LIKE '".$searchterm."%' 
      UNION 
      SELECT * FROM filesindex WHERE location LIKE '".$searchterm."%'"; 

或理想,有没有涉及较少的硬编码到一个更简单的方法搜索一张桌子。

任何想法?

谢谢

回答

2

不要使用UNION,您可以使用ANDOR链搜索字词。是的,如果你想保持你的代码简单,你需要对这些字段进行硬编码。

$query = "SELECT * FROM filesindex WHERE filename LIKE '".$searchterm."%' 
     OR creation LIKE '".$searchterm."%' 
     OR length LIKE '".$searchterm."%' 
     OR wall LIKE '".$searchterm."%' 
     OR location LIKE '".$searchterm."%'"; 
2

查询可以,如果你想找到所有这些列的一个包含搜索项的记录被改写这样

$query = "SELECT * FROM filesindex WHERE filename LIKE '".$searchterm."%' 
      OR creation LIKE '".$searchterm."%' 
      OR length LIKE '".$searchterm."%' 
      OR wall LIKE '".$searchterm."%' 
      OR location LIKE '".$searchterm."%'"; 

1

相反联盟,使用OR

$query = "SELECT * 
      FROM filesindex 
      WHERE filename LIKE '".$searchterm."%' 
      OR  creation LIKE '".$searchterm."%' 
      OR  length LIKE '".$searchterm."%' 
      OR  wall LIKE '".$searchterm."%' 
      OR  location LIKE '".$searchterm."%'"; 

但是 - 我建议使用像Zend的Lucene的,而不是MySQL的基于文件的搜索系统。