Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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 如何在数据库字段的任意位置显示包含多个关键字的计数结果_Php_Mysql - Fatal编程技术网

Php 如何在数据库字段的任意位置显示包含多个关键字的计数结果

Php 如何在数据库字段的任意位置显示包含多个关键字的计数结果,php,mysql,Php,Mysql,我们有一个页面tcount.php,其中使用php脚本获取mysql数据库中文本字段中任意位置出现的关键字1和关键字2的计数。计数显示为超链接。在这之后,我们希望如果有人单击超链接,他们将在showt.php页面中看到详细的结果,其中显示仅与包含这两个关键字的文本字段对应的数据库行 第二个页面showt.php的url如下 http://www.example.com/page.php?keyword=keyword1+keyword2 但问题是,它只显示那些关键字1和关键字2相邻的结果 例如

我们有一个页面tcount.php,其中使用php脚本获取mysql数据库中文本字段中任意位置出现的关键字1和关键字2的计数。计数显示为超链接。在这之后,我们希望如果有人单击超链接,他们将在showt.php页面中看到详细的结果,其中显示仅与包含这两个关键字的文本字段对应的数据库行

第二个页面showt.php的url如下

http://www.example.com/page.php?keyword=keyword1+keyword2
但问题是,它只显示那些关键字1和关键字2相邻的结果

例如,关键字1是car,关键字2是cap,我们的文本字段如下-

  • 车帽

  • 汽车最佳帽

  • 新车

  • 然后,我们希望它显示1。二,。作为结果,但它在结果页面中仅显示第一名

    请帮忙

    编辑-

    这是第1页tcount.php中的代码-

    $kewyWordQ = $db->query("SELECT keywords FROM Table1 ");
    
    <?php
                    while($row = $kewyWordQ->fetch(PDO::FETCH_ASSOC))
                    {$keyWord = $row['keywords'];
                        $keyWordsArr = explode(" ", $row['keywords']);
                        $countData = array();
    
                        $keyIndex = 0;
                        $tIndices = array();
                        $tArr = array();
                        $tIndices[] = "-1";
                        foreach($keyWordsArr as $keyword)
                        {
                            $t = $db->query("SELECT user_name FROM Table2 WHERE    
      t_text LIKE '%$keyWordsArr[$keyIndex]%'");
                            $tArr[] = $t;
                            while($row2 = $tweet->fetch(PDO::FETCH_ASSOC))
                            {
                                $found = TRUE;
                                foreach($keyWordsArr as $keyword1)
                                {
                                    $ret = strpos(strtolower($row2['t_text']),  
         strtolower($keyword1));                                    
                                    if(($ret == 0) &&  
         strcmp(strtolower($row2['t_text'][0], strtolower($keyword1)[0])))
                                    {
                                        $found = FALSE;
                                        break;
                                    }
                                }
    
                                if($found == TRUE)
                                {
                                    $ret = strpos($tIndices, $row2['t_id']);
                                    if(($ret == 0) && strcmp($tIndices[0], 
         $row2['t_id']))
                                    {
                                        $tIndices[] = $row2['t_id'];
                                        $countData[] = $row2['user_name'];
                                    }
                                }
                            }
                            $keyIndex++;
                        }
                    ?>
    
                    <tr><td><?php echo $row['keywords'];?></td>
                    <td><a href="showt.php?keyword=<?php echo 
        urlencode($keyWord); ?>" target="_blank"><?php echo count($countData); ? 
        ></a></td>
                    <td><a href="showt.php?keyword=<?php echo 
            urlencode($keyWord); ?>" target="_blank"><?php echo 
          count(array_unique($countData)); ?></a></td>
                    </tr>
                    <?php } ?> 
    

    查询的
    WHERE
    语句应该如下所示:

    WHERE my_text_field LIKE ?
    
    绑定的参数应该是
    %$keyword1%$keyword2%

    要定义
    $keyword1
    $keyword2
    变量,可以执行以下操作:

    list($keyword1, $keyword2) = explode(' ', $_GET['keyword']);
    

    或者您可以简单地使用
    “%”。内爆('%',爆炸('',$\u GET['keyword'])。“%”
    如果您有多个可能的关键字,则查询的
    WHERE
    语句应如下所示:

    WHERE my_text_field LIKE ?
    
    绑定的参数应该是
    %$keyword1%$keyword2%

    要定义
    $keyword1
    $keyword2
    变量,可以执行以下操作:

    list($keyword1, $keyword2) = explode(' ', $_GET['keyword']);
    
    或者您可以简单地使用
    “%”。内爆('%',爆炸('',$\u GET['keyword'])。“%”
    如果您有多个可能的关键字

    有两种方法 一个是php和mysql很难做到的

    $keyword = $_GET('keyword');
    $keywordArray = explode(" ",$keyword);
    $queryString = "";
    foreach($keywordArray as $key=>$value) {
        $queryString .= " column_name LIKE '%$value%' OR";
    }
    "SElECT * FROM table WHERE ".$queryString
    
    第二个是mysql本身,也就是全文搜索 一个是php和mysql很难做到的

    $keyword = $_GET('keyword');
    $keywordArray = explode(" ",$keyword);
    $queryString = "";
    foreach($keywordArray as $key=>$value) {
        $queryString .= " column_name LIKE '%$value%' OR";
    }
    "SElECT * FROM table WHERE ".$queryString
    

    第二个是mysql本身,即全文搜索

    您的mysql查询?@Gopalakrishnan添加了mysql php代码。请参见下面的OK试试我的答案我的代码与你答案中的代码相似。我认为第1页tcount.php中的计数显示正确,但第2页showt.php中的结果显示不正确。正如我在帖子中解释的,我得到的结果是关键字1关键字2,而不是那些在关键字1和关键字2之间有另一个单词的结果你的第一页给出的结果很好?你的mysql查询?@Gopalakrishnan添加了mysql php代码。请参见下面的OK试试我的答案我的代码与你答案中的代码相似。我认为第1页tcount.php中的计数显示正确,但第2页showt.php中的结果显示不正确。正如我在文章中所解释的,我得到的结果是关键字1关键字2,而不是那些在关键字1和关键字2之间有另一个单词的结果你的第一页给出的结果很好?这是针对第1页或第2页(请参阅我编辑的文章)这是针对第1页或第2页(请参阅我编辑的文章)@Gopalkrishnan请告诉我如何进行全文搜索purpose@Gopalkrishnan请告诉我如何做全文搜索的目的