首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果阅读每个单词,如何在While循环中删除重复项

如果阅读每个单词,如何在While循环中删除重复项
EN

Stack Overflow用户
提问于 2018-08-30 21:41:28
回答 3查看 964关注 0票数 0

如何删除此代码段中的重复项。查询中的Distinct函数将不起作用,因为您将在每次循环中读取每个单词并将其添加到表中。如何在我的表中显示所有不同的数据

代码语言:javascript
复制
<?php
    $connect = mysqli_connect("localhost", "root", "", "dbProject");
    $output = '';
    if(isset($_POST["query"]))
    {
        $search = mysqli_real_escape_string($connect, $_POST["query"]);
        $SearchEach= explode(" ",$search);
        $output .= '<div class="table-responsive">
            <table class="table table bordered">
                            <tr>
                                <th>Book ID</th>
                                <th>Name</th>
                                <th>Author</th>
                                <th>Tags</th>
                                <th>Status</th>

                            </tr>';
        foreach($SearchEach as $value){
            $query = "
                SELECT * FROM tblProject 
                WHERE tyear >=YEAR(NOW())-30 AND (tags LIKE '%".$value."%'OR
                     tcname LIKE '%".$value."%' OR
                     author LIKE '%".$value."%' OR
                     status LIKE '%".$value."%')";
                $result = mysqli_query($connect, $query);
                while($row = mysqli_fetch_array($result))
                    {
                        $output .= '<tr>
                                <td>'.$row["tcno"].'</td>
                                <td>'.$row["tcname"].'</td>
                                <td>'.$row["Author"].'</td>
                                <td>'.$row["tags"].'</td>
                                <td>'.$row["status"].'</td>
                            </tr>';
                    }
            }
            echo $output;
    }
    ?>
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-08-30 21:57:12

假设您的tcno字段值是唯一的,您可以使用以下逻辑来不显示已显示的记录

代码语言:javascript
复制
$processedRecrods = [];

foreach ($SearchEach as $value) {
    $query = "
        SELECT * FROM tblProject 
        WHERE tyear >=YEAR(NOW())-30 AND (tags LIKE '%" . $value . "%'OR
        tcname LIKE '%" . $value . "%' OR
        author LIKE '%" . $value . "%' OR
        status LIKE '%" . $value . "%')";

    $result = mysqli_query($connect, $query);

    while ($row = mysqli_fetch_array($result)) {

    //See if record with this tcno is already processed / displayed in table
    if (!in_array($row['tcno'], $processedRecrods)) {
            $output .= '<tr>
                            <td>' . $row["tcno"] . '</td>
                            <td>' . $row["tcname"] . '</td>
                            <td>' . $row["Author"] . '</td>
                            <td>' . $row["tags"] . '</td>
                            <td>' . $row["status"] . '</td>
                        </tr>';

            //Add tcno in the array of processed records
            $processedRecrods[] = $row["tcno"];
        }
    }
}

echo $output;
票数 1
EN

Stack Overflow用户

发布于 2018-08-30 21:52:10

首先只存储在各种搜索过程中找到的行的ID。然后,删除重复的ID。然后,根据唯一ID检索并显示相关行。

票数 1
EN

Stack Overflow用户

发布于 2018-08-30 21:57:48

我会将结果推送到一个新的堆栈中,并使用array_unique

代码语言:javascript
复制
<?php
$newStack = [];

while ($row = mysqli_fetch_array($result)) {
    array_push($newStack, $row);
}

$newStack = array_unique($newStack);

foreach($newStack as $row) {
    $output .= "my html";
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52098555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档