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

したがって、重複がなく、すべてが1行になっています。

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

この小さな解決策を試してください:

     $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 に答える
0

クエリの 'trafficsource' で Group by を使用してから、while ループで $row['trafficsource'] の各値を他の値に連結し、while ループの外でエコーします。

于 2012-10-16T14:46:51.167 に答える