2013-02-27 99 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