Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
搜索表MySQL&;PHP_Php_Mysql - Fatal编程技术网

搜索表MySQL&;PHP

搜索表MySQL&;PHP,php,mysql,Php,Mysql,我希望能够使用搜索字符串、url中的值搜索MySQL表,并将结果显示为XML输出 我想我已经从搜索字符串中获得了格式和声明变量 我的问题是搜索整个表,我已经查看了以前的答案,它们似乎都必须声明表中的每一列以进行搜索 例如,我的数据库布局如下所示: **filesindex** -filename -creation -length -wall -playlocation 首先,以下各项是否合适: $query = "SELECT * FROM filesindex WHERE filename

我希望能够使用搜索字符串、url中的值搜索MySQL表,并将结果显示为XML输出

我想我已经从搜索字符串中获得了格式和声明变量

我的问题是搜索整个表,我已经查看了以前的答案,它们似乎都必须声明表中的每一列以进行搜索

例如,我的数据库布局如下所示:

**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."%'";
或者,理想情况下,是否有一种更简单的方法来搜索表,该方法只需较少的硬编码

有什么想法吗


谢谢

就像
一样,速度慢,效率低。如果您正在使用存储引擎,您可能需要考虑使用。

不要使用UNION,您可以使用
链接搜索词。是的,如果你想让你的代码保持简单,你需要硬编码字段

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

查询可以这样重写

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

如果要查找其中一列包含搜索词的所有记录。

而不是union,请使用

$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