如何清理mysqli每月查询

时间:2014-04-08 00:50:22

标签: mysqli

我想知道是否有更好的方法来执行每月查询并将结果分配到变量而不必有12个单独的查询?这就是我目前所拥有的。

    //Grab JAN
$janquery = "SELECT * FROM $resultsTable WHERE Month( date ) = 1 AND `user_id` = '$userid'";
$jansresult = $link->query($janquery) or die($link->error.__LINE__);
    while($janrow = $jansresult->fetch_assoc()) {
          $janscore = $janrow['score'] + $janscore;
    }
    if($janscore == NULL) $janscore = 0;

    //Grab FEB
$febquery = "SELECT * FROM $resultsTable WHERE Month( date ) = 2 AND `user_id` = '$userid'";
$febsresult = $link->query($febquery) or die($link->error.__LINE__);

    while($febrow = $febsresult->fetch_assoc()) {
          $febscore = $febrow['score'] + $febscore;
    }
    if($febscore == NULL) $febscore = 0;


    //Grab MAR
$marquery = "SELECT * FROM $resultsTable WHERE Month( date ) = 3 AND `user_id` = '$userid'";
$marsresult = $link->query($marquery) or die($link->error.__LINE__);

    while($marrow = $marsresult->fetch_assoc()) {
          $marscore = $marrow['score'] + $marscore;
    }
    if($marscore == NULL) $marscore = 0;

AND SO ON .....

我相信必须有一个更好的方法,但我的大脑现在不能正常工作:)任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

在新的一天和新的开始之后,我能够提出一个比运行查询12次更容易,更合理的解决方案。我会在这里发布答案,这可能会对未来的其他人有所帮助。

同样,我不是分别运行12次查询来分别得到每个月的结果,而是只用一个查询得到相同的结果。

//Grab Each Month's Results
$monthquery = "SELECT * FROM $resultsTable WHERE Year( date ) = '$curYear' AND `user_id` = '$userid'";
$monthresult = $link->query($monthquery) or die($link->error.__LINE__);
    while($monthrow = $monthresult->fetch_assoc()) {
           $datecalories = $monthrow['date'];
           $monthcalories = $monthrow['calories'];

           switch (date("m", strtotime($datecalories)))
           {
                case "1":
                $jancal = $monthcalories + $jancal;
           break;
                case "2":
                $febcal = $monthcalories + $febcal;
           break;
                case "3":
                $marcal = $monthcalories + $marcal;
           break;
                case "4":
                $aprcal = $monthcalories + $aprcal;
           break;
                case "5":
                $maycal = $monthcalories + $maycal;
           break;
                case "6":
                $juncal = $monthcalories + $juncal;
           break;
                case "7":
                $julcal = $monthcalories + $julcal;
           break;
                case "8":
                $augcal = $monthcalories + $augcal;
           break;
                case "9":
                $sepcal = $monthcalories + $sepcal;
           break;
                case "10":
                $octcal = $monthcalories + $octcal;
           break;
                case "11":
                $novcal = $monthcalories + $novcal;
           break;
                case "12":
                $deccal = $monthcalories + $deccal;
           break;
           default:
                $blank = 0;
           }
    }

    if($jancal == NULL) { $jancal = 0; }
    if($febcal == NULL) { $febcal = 0; }
    if($marcal == NULL) { $marcal = 0; }
    if($aprcal == NULL) { $aprcal = 0; }
    if($maycal == NULL) { $maycal = 0; }
    if($juncal == NULL) { $juncal = 0; }
    if($julcal == NULL) { $julcal = 0; }
    if($augcal == NULL) { $augcal = 0; }
    if($sepcal == NULL) { $sepcal = 0; }
    if($octcal == NULL) { $octcal = 0; }
    if($novcal == NULL) { $novcal = 0; }
    if($deccal == NULL) { $deccal = 0; }