2012-04-12 63 views
0

我目前有以下使用MySQL的PHP​​文件,它應該返回結果從00:00到23:00(這是一個時間表),但它只返回01: 00〜23:00:PHP中的MySQL查詢不返回真實結果

<?PHP 
include("../panel/config.php"); 
#// Timetable Clearup Variabls 

$yesterday = strtotime('yesterday'); 
$yesterdow = date('l',$yesterday); 
$order = "SELECT * FROM timetable WHERE day = '$yesterdow' ORDER BY time LIMIT 0 , 30"; 
$result = mysql_query($order); 
$yesterdayd = date('F jS, Y', time()-86400); 

    //SET XML HEADER 
    header('Content-type: text/xml'); 

    //CONSTRUCT RSS FEED HEADERS 
    $output = '<rss version="2.0">'; 
    $output .= '<channel>'; 
    $output .= "<title>Timetable - {$yesterdayd} </title>"; 
    $output .= '<description>Timetable.</description>'; 
     $output .= '<link>http://www.site.com</link>'; 
    while ($row = mysql_fetch_array($result)) { 
    //BODY OF RSS FEED 

    $output .= "<item><title>Timetable - {$yesterdayd}</title> 
    <description>"; 
while ($row=mysql_fetch_array($result)) 
{ 
     $rowset[] = $row; 
    //BODY OF RSS FEED 
    $output .= htmlspecialchars($row['time']) . " " . htmlspecialchars($row['username']) . "<br/>"; 
} 
$output .= '</description></item> '; 
} 
    //CLOSE RSS FEED 
    $output .= '</channel>'; 
    $output .= '</rss>'; 

    //SEND COMPLETE RSS FEED TO BROWSER 
$filename = "timetable.xml"; 

       if (!$handle = fopen($filename, 'w')) { 
      echo "Cannot open file ($filename)"; 
      exit; 
      } 

      // Write $somecontent to our opened file. 
      if (fwrite($handle, $output) === FALSE) { 
      echo "Cannot write to file ($filename)"; 
      exit; 
      } 

      if (fwrite($handle, $total) === FALSE) { 
      echo "Cannot write to file ($filename)"; 
      exit; 
      } 

      echo "Success, wrote {$content}{$total} to file ($filename)"; 

      fclose($handle); 


?> 

任何人都可以提供一些線索

+0

這是功課嗎?有人發佈類似的東西... http://stackoverflow.com/questions/10111956/display-results-from-mysql-query-into-table-using-php/10112101#10112101 – 2012-04-12 00:37:19

+0

什麼是'$ nightsdow'在你的SQL查詢中? – Lion 2012-04-12 00:37:20

+0

您的數據庫表是否包含要作爲您的假設返回的適當值? – Lion 2012-04-12 00:41:07

回答

1

您將要覆蓋的第一個結果是由於雙while循環。

while ($row = mysql_fetch_array($result)) { 
    //BODY OF RSS FEED 

    $output .= "<item><title>Timetable - {$yesterdayd}</title><description>"; 
    while ($row=mysql_fetch_array($result)) 
    { 
     // First $row result is now overwritten before you used it 
     // ... 

此外,您可能需要使用date('Y-m-d')而不是date('l')。我不確定你的日期欄包含哪些內容,但date('l')返回上週和週五5周前的星期二和星期二之間不區分的日期的名稱。

您只需要一個while($row = mysql_fetch_array($result))而不是兩個。

+0

當我刪除while循環中的一個時,它會導致內容被單獨封裝在中,而當我使用兩個while循環時把所有返回的內容放在一個<description>內容全部</ description> Shoier 2012-04-12 00:53:41

+0

嗯,我不確定你想要的最終輸出是什麼,但你可能需要做一些重新格式化後刪除一個while循環。我所知道的是,在發佈的代碼中,您正在失去第一個結果,內部while循環正在完成所有工作。除了丟失一個結果並將所有內部循環結果打印在一個元素中外,其他什麼也不做。 – drew010 2012-04-12 00:56:14