Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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
Php 在mysqli中搜索一列中的多个值,返回与另一列匹配的值,按出现次数排序?_Php_Arrays_Search_Mysqli - Fatal编程技术网

Php 在mysqli中搜索一列中的多个值,返回与另一列匹配的值,按出现次数排序?

Php 在mysqli中搜索一列中的多个值,返回与另一列匹配的值,按出现次数排序?,php,arrays,search,mysqli,Php,Arrays,Search,Mysqli,在开始之前,以下是数据库的示例格式: id date title content -------------------------------------------------------------- 1 YYYY-MM-DD some text here lots of stuff to search here 2 YYYY-MM-DD some text here lots of stuff to search here

在开始之前,以下是数据库的示例格式:

id  date         title            content
--------------------------------------------------------------
1   YYYY-MM-DD   some text here   lots of stuff to search here
2   YYYY-MM-DD   some text here   lots of stuff to search here
3   YYYY-MM-DD   some text here   lots of stuff to search here
我现在已经设置好获取一行的id,然后将日期、标题和内容分配给PHP变量,以便在页面的不同位置显示(这是一个博客,这些都是帖子)

现在我正在尝试创建一个函数来搜索数组中每个字符串的内容(代码已经将输入到搜索框中的单词按空格分割成一个数组,因此输入
cat hotdog suit
将得到
[0]cat[1]hotdog[2]suit

我设置了一个循环,对每个字符串执行查询:

foreach ($queryArray as $queryArrayString) {
    // query the content column for $queryArrayString
}
但是,我不知道应该使用什么查询来查找字符串所在的帖子的id。我想把它分配给一个变量(
$results
)。 在反转数组后,会首先显示更高的id(更新的结果),我希望找到每个id的标题并按如下方式存储:

id (let's say it is 3) => matching title
id (let's say it is 1) => matching title
这可能吗?我尝试了几个不同的查询,都没有成功,但其中一个需要2分钟和大量内存

任何帮助都将不胜感激

编辑:我已经创建了标题和内容列的文本索引(我想同时搜索这两个列),如中所示


可以搜索这个吗?正如我在评论中所说,我只需要它以某种方式返回相应的id和标题。(结果链接文本的标题,链接目的地的id:
是我在理想世界中使用的格式,有一些复杂的解决方案,如Apache SOLR或Elasticsearch,用于索引记录,并在提供多个文本搜索词时高效返回。幸运的是,您可以通过尝试类似的方法来获得这样的结果(未经测试)


您可以使用MySQL
LIKE
条件:
SELECT*从您的帖子中,像“%firstword%”和“%secondword%”这样的内容听起来像是您需要在表中实现全文搜索。请阅读MySQL文档:否则,使用
LIKE
搜索大量文本会非常慢。我有我的索引设置如下。这是最好的方法吗?是否可以搜索
文本
索引,因为这将同时搜索标题和内容?然后我只需要它以某种方式返回相应的id和标题。(结果链接文本的标题,链接目的地的id:
是我使用的格式。好的,我已经把它放进去了。)(稍作修改),我不确定如何从中获得结果。以下是我的完整代码:请注意,
$q
是在文档开头用
定义的,因为它在其他地方使用。您在哪里执行查询的?这就是为什么我不能用2小时睡眠编码的原因。我添加了
$results=mysqli\u查询($databaseConnect,$query);
但是
$results
将不会回显。我本来希望得到
数组,但它什么也没做。您共享的链接仍然有“tableName”作为查询内表的名称(并且没有执行)。我会回显查询,并尝试在phpmyadmin上运行它,以确定是否有任何错误。下面是我的全部代码:我在phpmyadmin中运行了它,得到的结果是:我不确定它的含义。
$searchTerms = "cat hotdog suit";
$searchArray = explode(' ',$searchTerms);

$conditions = array();
$foreach (searchArray as $searchTerm){
    $conditions[] = 'title-content LIKE %'.searchTerm.'%';
}

$query = '
SELECT
    tableName.id,
    CONCAT_WS(' ', tableName.title,tableName.content) as title-content
FROM
    tableName
WHERE
    '.implode(' OR ', $conditions);