2017-05-21 9 views
1

これを行う方法はちょっとありません。私はこのPDOのものはすべて使い慣れていて、まだそれに慣れていません。基本的には、私は2つのテーブル、飛行機とユーザーを持っています。私はすべてのフライトの名前を見つけて、usersテーブルを調べ、SUMがフライト名の1つと等しい「points」カラムを探したいと思います。これは私がこれまで持っていると私はちょうどあなたは、SQLでsumフィールドをフェッチする必要がある任意の更なるforeach文を使ってMySQL行のSUMをエコーする

<?php 
$qry = "SELECT * FROM flights ORDER by points DESC"; 
$stmt = $_dbConn->query($qry); 
$flightRows = $stmt->fetchAll(); 

$flightTotalPoints = []; 
$qry = "SELECT flight, SUM(points) FROM users WHERE flight=:flightName ORDER by SUM(points) DESC"; 
$stmt = $_dbConn->prepare($qry); 
foreach ($flightRows as $flight) { 
    $flightName = $flight["name"]; 
    $stmt->execute(["flightName" => $flightName]); 
    $flightTotalPoints[$flightname] = $stmt->fetchAll(); 
} 


<?php if (!count($flightRows)): ?> 
    <div class="alert alert-warning alert-block"><h4 class="alert-heading">Notice</h4>No flights have been created yet 
    </div> 
<?php else: ?> 
    <div class="span12"> 
     <div class="widget-box"> 
      <div class="widget-title"><span class="icon"><i class="icon-th"></i></span> 
       <h5>Current Point Rankings</h5> 
      </div> 
      <div class="widget-content nopadding"> 
       <table class="table table-bordered"> 
        <thead> 
        <tr> 
         <th>Flight Name</th> 
         <th>Points</th> 
        </tr> 
        </thead> 
        <tbody> 
        <?php foreach ($flightRows as $flight): ?> 
         <tr> 
          <td><?php echo $flight["name"]; ?></td> 
          <td><?php echo $flightTotalPoints[$flight["name"]]; ?></td> 
         </tr> 
        <?php endforeach; ?> 
        </tbody> 
       </table> 
      </div> 
     </div> 

答えて

4

進行しないことができるものです。より明確にはfetchAll &後にその値を取得&ためにあなたは、単に働いていた最後の$ flightName(小文字N、おっと!)、で私のタイプミスから$flightTotalPoints配列別に

$flightTotalPoints = []; 
$qry = "SELECT flight, SUM(points) as total_sum FROM users WHERE flight=:flightName ORDER by SUM(points) DESC"; 
$stmt = $_dbConn->prepare($qry); 
foreach ($flightRows as $flight) { 
    $flightName = $flight["name"]; 
    $stmt->execute(["flightName" => $flightName]); 
    $flightTotalPoints[$flightName] = $stmt->fetchAll()[0]['total_sum']; 
} 
+0

にそれを置く、それにエイリアスを追加することができます完全に!多くのありがとう –

+0

ああ!それに気付かなかった。それを更新しました。それはあなたのためにうれしいです。 –

+0

エイリアスを使うのは良いです(私は定期的に行っています)。しかし、 '$ flight ['SUM(points)']'は動作します。 –

関連する問題