如何隐藏SQL

时间:2017-04-02 08:53:35

标签: php html sql

Serposcope中的SQL数据库存在问题。基本上我要做的是选择所有关键字及其排名和日期。到目前为止,我设法想出了这样的东西:

select keyword,
    rank,
    day
from GOOGLE_SEARCH
inner join GOOGLE_RANK on GOOGLE_SEARCH.id = GOOGLE_RANK.google_search_id
inner join RUN on GOOGLE_RANK.run_id = RUN.id
order by day;

它给了我这个结果:

+-----------+------+------------+
| keyword   | rank | day        |
+-----------+------+------------+
| keyword1  |    4 | 2017-04-01 |
| keyword1  |    4 | 2017-04-02 |
+-----------+------+------------+

我要做的是用HTML返回这样的内容:

+-----------+------+------------+
| keyword   | rank | day        |
+-----------+------+------------+
| keyword1  |    4 | 2017-04-01 |
|           |    4 | 2017-04-02 |
+-----------+------+------------+

所以关键字不重复。你可以给我一个提示,如果我可以从SQL做到这一点,或者我需要在HTML / PHP中隐藏它们吗?我不是开发者,所以如果我问一个微不足道的问题,请原谅我。

1 个答案:

答案 0 :(得分:0)

首先,您需要通过分组行对它们进行排序,然后您可以添加其他orderby列:

order by keyword, day;

第二,你需要跳过循环中的类似元素:

if ($result = $mysqli->query($query)) {
    $last_keyword = null;
    // fetch associative array
    while ($row = $result->fetch_assoc()) {
        if($row["keyword"] != $last_keyword){
             // print the changed keyword
             echo $row["keyword"];
             // set the last keyword to the new keyword
             $last_keyword = $row["keyword"];
        }
        // do your other listings here
    }

    // free result set
    $result->free();
}