Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.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 用于布尔模式下全文搜索的foreach循环_Php_Mysql_Full Text Search - Fatal编程技术网

Php 用于布尔模式下全文搜索的foreach循环

Php 用于布尔模式下全文搜索的foreach循环,php,mysql,full-text-search,Php,Mysql,Full Text Search,我有一个php代码,它从单词表中获取玩具名称,并使用布尔模式全文搜索在玩具表的玩具文本字段中匹配这些单词,并为用户和玩具和唯一用户的名称显示网页 玩具的名称可以是一个单词,也可以是多个单词的组合。我们希望从toys中获取这些结果,该字段具有toys\u text字段,其中包含单词表中单词组合的所有单词 (示例-如果words表中有名为blue car的条目,则blue和car都应出现在toys表toys\u text字段中以进行匹配)。随着时间的推移,数据库会发生变化,新玩具的用户会被添加,过时

我有一个php代码,它从
单词
表中获取
玩具名称
,并使用布尔模式全文搜索在
玩具
表的
玩具文本
字段中匹配这些单词,并为
用户
玩具和唯一用户的
名称显示
网页

玩具的名称可以是一个单词,也可以是多个单词的组合。我们希望从
toys
中获取这些结果,该字段具有
toys\u text
字段,其中包含
单词表中单词组合的所有单词

(示例-如果
words
表中有名为
blue car
的条目,则
blue
car
都应出现在
toys
toys\u text
字段中以进行匹配)。随着时间的推移,数据库会发生变化,新玩具的用户会被添加,过时玩具的用户会被删除

我面临的问题是如何正确地将数组转换为字符串以输入布尔全文搜索。我使用
foreach
循环并希望输出+(蓝色)+(car),但它只是将+(car)插入布尔全文查询

echo$query1输出

`select COUNT(*) as 'count', COUNT(DISTINCT tw.screen_name) AS 'cnt' from 
tweets tw join users us on tw.user_id=us.user_id WHERE MATCH (tweet_text) 
AGAINST (' +(car)' IN BOOLEAN MODE)`
而我希望查询输出为

`select COUNT(*) as 'count', COUNT(DISTINCT tw.screen_name) AS 'cnt' from 
tweets tw join users us on tw.user_id=us.user_id WHERE MATCH (tweet_text) 
AGAINST ('+(blue) +(car)' IN BOOLEAN MODE)`
这是我的密码-

<?php
$query = "SELECT * FROM words ORDER BY `words`.`words` 
ASC";
$result = mysqli_query($con, $query);

$i = 1;            
while($row = mysqli_fetch_array($result)){                        
    $Word = $row['words'];
    $WordsArr = explode(" ", $row['words']);
    $query = "";

       if(count($WordsArr) > 1){
          foreach ($WordsArr as $value) {
                    $value1 = " +"."(".$value."*".")";
                    }
           $query1 = "select COUNT(*) as 'count', COUNT(DISTINCT 
           t.name) AS 'cnt' from toys t WHERE MATCH (toys_text) AGAINST 
          ('$value1' IN BOOLEAN MODE)";
        }else{
        $query1 = "select COUNT(*) as 'count', COUNT(DISTINCT t.name) AS 
       'cnt' from toys t WHERE 
        MATCH (toys_text) AGAINST ('$WordsArr[0]* IN BOOLEAN MODE')";
        }               
        $Data1 = mysqli_query($con, $query1);
        $total1 = mysqli_fetch_assoc($Data1);                     
            ?>                  
        <tr>
          <td><?php echo $i;?></td>
          <td><?php echo $row['words'];?></td>
          <td><a href="showtoys.php?word=<?php echo 
          urlencode($Word); ?>" target="_blank"><?php echo 
          $total1['count']; ?></a></td>
          <td><a href="showtoys.php?keyword=<?php echo urlencode($Word); 
          ?>" target="_blank"><?php echo $total1['cnt']; ?></a></td>                   
        </tr>
            <?php $i++;} ?> 

您的问题是没有连接字符串:

foreach ($WordsArr as $value) {
    $value1 = " +"."(".$value."*".")";
}
应该是:

$value1 = '';
foreach ($WordsArr as $value) {
    $value1 .= " +"."(".$value."*".")";
}

谢谢你的回复。它现在正在工作。你能提供一些关于这种连接的文档吗?