2016-05-31 87 views
0

我正在做一個調查跟蹤網站,我遇到了麻煩。我想顯示過去7天內完成的所有調查。我使用mysqli_fetch_row來查看是否有任何行被檢索,並且它們是否顯示它們。如果他們在過去7天內沒有被強制執行,我希望它顯示「最近沒有強制調查要顯示」。爲什麼mysqli_fetch_row阻止顯示我的所有結果?

<?php 
      require('db/connect.php'); 
      if (!isset($_GET['sort'])) { 
       $sort = 'client_id'; 
      } else { 
       $sort = $_GET['sort']; 
      } 
      if ($result = $db->query("SELECT client_id, date_added, client, email, date_sent, date_completed FROM clients NATURAL JOIN surveys WHERE date_completed BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() ORDER BY $sort")) {//shows surveys completed in the last 7 days 
       if (mysqli_fetch_row($result) == 0) { 
        echo "No recently completed surveys to show."; 
       } else { 
        echo "<table>"; 
        echo "<tr><th><a href='portal.php?sort=client_id'>ID</a></th><th><a href='portal.php?sort=date_added'>Date Added</a></th><th><a href='portal.php?sort=client'>Client</a></th><th><a href='portal.php?sort=email'>Email</a></th><th><a href='portal.php?sort=date_sent'>Sent</a></th><th><a href='portal.php?sort=date_completed'>Completed</a></th>"; 
         $rows = $result->num_rows; 
         for ($num = 0; $num < $rows; ++$num) { 
          $row = $result->fetch_array(MYSQLI_NUM); 
           $client_id = $row[0]; 
           $date = $row[1]; 
           $client = $row[2]; 
           $email = $row[3]; 
           $sent = $row[4]; 
           $completed = $row[5]; 
           echo "<tr>"; 
           echo "<td>$client_id</td>"; 
           echo "<td>$date</td>"; 
           echo "<td>$client</td>"; 
           echo "<td>$email</td>"; 
           echo "<td>$sent</td>"; 
           echo "<td><a href='survey/completed/index.php?id=$client_id'>$completed</a></td>"; 
           echo "</tr>"; 
          } 
          echo "</table>"; 
         } 
        } 
     ?> 

當我刪除了mysqli_fetch_row的if語句,它顯示了所有最近完成的調查,但是如果我離開它,它總是會留下一個出來。誰能幫忙?

+1

你爲什麼混合* *程序與*面向對象的風格*,即。 'mysqli_fetch_row()','$ result-> fetch_array()'? – Marcus

+1

'if(mysqli_fetch_row($ result)== 0){'獲取第一行,然後丟棄該結果 –

+0

@MarkBaker任何想法如何解決它?我以爲我看到如果返回0結果,如果它們是,則打印一條消息,如果沒有,則顯示數據。 – jaydickey

回答

0

當您進行測試時,您將丟棄第一個。你可以得到的行數是這樣,而不是:

if ($result->num_rows == 0) { 
    echo "No recently completed surveys to show."; 
} else { 
    // .... 
} 

文檔:mysqli_result::$num_rows

+0

謝謝先生。那樣做了。 – jaydickey

相關問題