2013-10-11 79 views
-1

這對我來說沒有意義,但是這個查詢在部分內容中顯示了一些記錄,並且在一行中顯示了一些內容。看似沒有節奏或理性。更糟糕的是,當我在MySql中運行查詢時,它工作得很好,沒有任何問題。目前我認爲這是一個惡魔和/或超級惡魔。爲什麼此查詢創建看似隨機的結果?

$sql = "SELECT phonenumber,date,dataplan AS currentplan, SUM(datamb) AS value_sum FROM maindata2 WHERE email='".($_POST['email'])."' GROUP BY phonenumber,date"; 

$result = mysql_query($sql); 

$row = mysql_fetch_assoc($result); 

$query = mysql_query($sql) or die(mysql_error()); 

$header_printed = false; 

while($row = mysql_fetch_array($query)) { 
    if ($row['phonenumber']) { 
     if ($header_printed === false) { 

      echo " 
      <table id='display'> 
      <tr> 
      <th>Phone Number:</th> 
      <th>Data Plan:</th> 
      <th>Data Usage This Period:</th> 
      <th>Remaining:</th> 
      <th>Date Reporting:</th> 
      </tr>"; 

      $header_printed = true; 
     } 
    } 
} 

while ($row = mysql_fetch_assoc($result)){ 
    echo "<tr>"; 
    echo "<td>".$row['phonenumber'] . "</td> "; 
    echo "<td>".$row['currentplan'] . "MB</td> "; 
    echo "<td>".ROUND ($row["value_sum"],2) . "MB</td> "; 
    echo "<td>".($row['currentplan'] - ROUND ($row["value_sum"],2)) . "MB</td>"; 
    echo "<td>".$row['date'] . "</td></tr>"; 
} 
echo "</table>"; 

任何想法都會比我現在多一個!

+0

數據庫中的數據是否格式良好?田野盡頭沒有流浪的新線?你可以檢查與phpMyAdmin? – John

+0

您能否提供表格的結構樣本,以便我們可以測試並查看究竟是什麼問題?另外,您正在循環中創建一個

標記。一般而言,您希望在循環之前創建表格標籤。 – Jesse

+0

你爲什麼要用相同的查詢兩次查詢數據庫並創建兩個結果集?爲什麼你有這樣一行'$ row = mysql_fetch_assoc($ result);'並且什麼也不做(它最終只會推進結果集指針)? –

回答

0

只是注意到在循環內導致創建多個表,這可能是一個原因,另一個說明,爲什麼你做了兩次相同的查詢,這是在db引擎上無用的頭? !和最後一個筆記,永遠不要在沒有清理的情況下直接在您的查詢中使用用戶輸入。

0

您的問題似乎是您運行相同的查詢兩次。在此行上:

$row = mysql_fetch_assoc($result); 

您可以獲取結果集的第一個結果行,但實際上根本沒有做任何事情。

您也可以混合使用$query$result

在遍歷結果集之前,您可能需要輸出表頭。然後循環一次結果集,輸出每一行。

相關問題