0

我有以下代码:

$query = "SELECT ads.*,
       trafficsource.name AS trafficsource,
       trafficsource.id AS trafficsourse_id,
       FROM ads
           JOIN trafficsource ON ads.trafficsourceId = trafficsource.id
        WHERE advertiserId = '$advertiser_id'";

        $mysqli = new mysqli();
        $mysqli->connect('localhost', 'root', '', 'adsbase');
        $result = $mysqli->query($query);
        while ($row = $result->fetch_assoc()) {
            echo "<h2>Traffic Sources: {$row['trafficsource']}</h2>";
        }

此代码显示的结果如下:

Traffic Sources: Example1
Traffic Sources: Example2
Traffic Sources: Example2
Traffic Sources: Example1
Traffic Sources: Example2
Traffic Sources: Example1

我想要并且无法弄清楚的是显示如下结果:

Traffic Sources: Example1, Example2

所以没有重复,也都在一行中。

4

4 回答 4

2

你几乎拥有它:

    $result = $mysqli->query($query);
    $trafficeSources = array();
    while ($row = $result->fetch_assoc()) {
        $trafficSources[] = $row['trafficsource'];
    }

    echo '<h2>Traffic Sources: ' . implode(', ', $trafficSources) . '</h2>';

编辑:使用 DISTINCT 查询

我假设您只需要流量来源名称,但如果需要,请随时添加更多列。请记住,尽管 DISTINCT 适用于返回的所有行的不同组合,因此如果其他选定的列不同,您最终可能会得到重复的流量来源。

$query = "SELECT DISTINCT trafficsource.name AS trafficsource
          FROM ads
          JOIN trafficsource ON ads.trafficsourceId = trafficsource.id
          WHERE advertiserId = '$advertiser_id'";
于 2012-10-16T14:45:55.820 回答
0

在查询中的“trafficsource”中使用 Group by,然后在 while 循环中将 $row['trafficsource'] 的每个值连接到其他值并在 while 循环外回显。

于 2012-10-16T14:46:51.167 回答
0

试试这个小解决方案:

     $trafic = array();
     while ($row = $result->fetch_assoc()) {
                if(!in_array($trafic)) $trafic[] = $row['trafficsource']
    }
    if(!empty($trafic)){
      echo  '<h2>Traffic Sources:' . imlode(',', $trafic) .'</h2>';
    }
于 2012-10-16T14:47:58.767 回答
0
$trafficSources = array();
while ($row = $result->fetch_assoc()) {
    if(!in_array($row['trafficsource'], $trafficSources) {
        $trafficSources[] = $row['trafficsource'];
    }
}

echo "<h2>Traffic Sources: ".implode(', ', $trafficSources)."</h2>";
于 2012-10-16T14:48:41.973 回答