2013-02-27 100 views
1

我知道同一主題有另一個問題,但該問題涉及到or die()語句。我有同樣的問題,但我沒有在while循環中使用或die()語句。答案可能很明顯,但我無法弄清楚。輸出在while循環後停止,而不使用「或die()」

$Dates = "1"; 
$Select = $mysqli->query("SELECT * FROM ----"); 
while ($Dates != "") { 
$Dates = $Select->fetch_assoc(); 
$Get = $mysqli->query("SELECT * FROM " . $Dates["Meeting_Date"] . " WHERE Last_Name='" . $LName . "'"); 
$Vals = $Get->fetch_assoc(); 
if ($Vals != "") { 
$TimeIn = $Vals["Time_In"]; 
$TimeIn2 = explode(":",$TimeIn); 
$TotIn = ($TimeIn2[0]*60)+$TimeIn2[1]; 
$TimeOut = $Vals["Time_Out"]; 
$TimeOut2 = explode(":",$TimeOut); 
$TotOut = ($TimeOut2[0]*60)+$TimeOut2[1]; 
$TotTime = ($TotOut - $TotIn)/60; 
$TotalTime = floor($TotTime) . " Hours " . ($TotTime-floor($TotTime))*60 . " Minutes"; 
echo "<tr><td>" . str_replace("_","/",$Dates["Meeting_Date"]) . "</td><td>" . $TimeIn . "</td><td>" . $TimeOut . "</td><td>" . $TotalTime . "</td></tr>"; 
} 
if ($Vals == "") { 
echo "<tr><td>" . str_replace("_","/",$Dates["Meeting_Date"]) . "</td><td colspan='3' style='background-color: rgba(0,0,0,0.25)'>Did not Attend</td></tr>"; 
} 
} 

任何while循環後,我說,沒有得到執行,即使像它應該是while循環僅執行2次...

任何想法表示讚賞

+1

嘗試打開錯誤報告或檢查您的錯誤日誌。沒有什麼突出的語法錯誤。 – 2013-02-27 22:18:29

+0

這是一個可怕的構造。爲什麼不簡單'while($ Vals = $ Get-> fetch_assoc())'?當沒有剩餘的行或者沒有行開始時它會自動終止。 – 2013-02-27 22:29:16

回答

1

這就是問題所在:

while ($Dates != "") { 
    $Dates = $Select->fetch_assoc(); 
    $Get = $mysqli->query("SELECT * FROM " . $Dates["Meeting_Date"] . " WHERE Last_Name='" . $LName . "'"); 

當沒有更多的記錄,$Dates將是空的(NULL),這樣下一行會導致一個嚴重錯誤要麼。

你可以把它改成:

while ($Dates = $Select->fetch_assoc()) { 
    $Get = $mysqli->query("SELECT * FROM " . $Dates["Meeting_Date"] . " WHERE Last_Name='" . $LName . "'"); 
+1

謝謝你,工作。 – 2013-02-27 22:23:24

+0

@Ryan Andrews不客氣。順便說一句,你真的需要每個日期一張桌子,這聽起來沒有必要嗎? – jeroen 2013-02-27 22:25:18

+0

好吧,從技術上說,在循環之前寫入標題,然後它只是在循環中寫入錶行,然後在循環之後關閉表。 – 2013-02-27 22:31:12