。我有以下代码。我想知道为什么我的“echo '<font color="#FF0000">'.$update_date2.'</font><br><br>'.$status.'<br>';
”没有显示在屏幕上?
。可以在另一个while语句中使用while语句吗?如下面的代码所示。
<?php
$getquery = mysql_query("SELECT * FROM it_task ORDER BY task_id DESC");
while ($rows = mysql_fetch_array($getquery))
{
$id= $rows['task_id'];
$date=$rows['date'];
$update_date = $rows['update_date'];
$project=$rows['project'];
$topic=$rows['topic'];
$instby=$rows['instby'];
$inst=$rows['inst'];
$dline=$rows['dline'];
$ocome=$rows['ocome'];
$comm=$rows['comm'];
$fin=$rows['fin'];
echo "<div id=\"container\">";
echo "<table>";
echo "<tr>";
echo "<div id=\"conid\">$id</div>";
echo "<div id=\"condate\">$date</div>";
echo "<div id=\"conproject\">$project</div>";
echo "<div id=\"contask\">$topic</div>";
echo "<div id=\"conselect\">$instby</div>";
echo "<div id=\"conselect1\">$inst</div>";
echo "<div id=\"condline\">$dline</div>";
echo "<div id=\"conocome\">";
$updatesquery = "SELECT * FROM it_task_update WHERE update_id=$id";
while($rows1 = mysql_fetch_array($updatesquery));
{
$update_date2 = $rows1['update_date'];
$status = $rows1['ocome'];
$update_id = $rows1['update_id'];
echo '<font color="#FF0000">'.$update_date2.'</font><br><br>'.$status.'<br>';
}
echo "</div>";
echo "<div id=\"concomm\">$comm</div>";
echo "<div id=\"confin\">$fin</div>";
echo "</tr>";
echo "</table>";
echo "</div>";
}
?>
。我在这组代码中做错了。任何人都可以指导我。 TIA!更多力量! :)
答案 0 :(得分:2)
你有SELECT * FROM it_task_update WHERE update_id = $id
的结果吗?
尝试
print_r($rows1); before line $update_date2 = $rows1['update_date'];
并查看结果。
答案 1 :(得分:2)
$updatesquery = "SELECT * FROM it_task_update WHERE update_id=$id";
<---dude, where's my query?
while($rows1 = mysql_fetch_assoc($updatesquery));
您实际上并未执行查询。您正在尝试对字符串执行提取,这是MySQL中的错误条件,导致提取调用返回FALSE,这使得while()循环立即终止..
换句话说,你在这些行之间错过了对mysql_query()
的调用。
另一方面,如果内循环将要执行“很多次”,你应该考虑将两个查询重新组合成一个带有JOIN子句的查询。几乎总是在执行一个大型查询然后运行多个较小的查询之后。
答案 2 :(得分:1)
您正在尝试从您从未执行过的查询中检索处理查询的结果。请注意,在开始循环结果之前,您调用了mysql_query。然后请注意,您尝试从内部while循环中从未执行的查询开始获取结果。
答案 3 :(得分:1)
是的,可以在另一个循环中使用一段时间或其他类型的循环,因为它取决于您的业务逻辑。但是,您忘记在while循环之前执行第二个查询。如果您使用INNER JOIN
或其他内容执行此操作会更好,这样您就不会浪费资源。
另外,我建议你不要用echo打印出DOM元素,但要像这样<div id="username">Username: <?php echo $username; ?></div>
。但是,即使在您的情况下,也可以保持代码清洁。这是我的建议:
<?php
$getquery = mysql_query("SELECT * FROM it_task ORDER BY task_id DESC");
while ($rows = mysql_fetch_array($getquery))
{
$id= $rows['task_id'];
$date=$rows['date'];
$update_date = $rows['update_date'];
$project=$rows['project'];
$topic=$rows['topic'];
$instby=$rows['instby'];
$inst=$rows['inst'];
$dline=$rows['dline'];
$ocome=$rows['ocome'];
$comm=$rows['comm'];
$fin=$rows['fin'];
echo '<div id="container\">'.
'<table>'.
'<tr>'.
"<div id=\"conid\">$id</div>".
"<div id=\"condate\">$date</div>".
"<div id=\"conproject\">$project</div>".
"<div id=\"contask\">$topic</div>".
"<div id=\"conselect\">$instby</div>".
"<div id=\"conselect1\">$inst</div>".
"<div id=\"condline\">$dline</div>".
"<div id=\"conocome\">";
$updatesquery = "SELECT * FROM it_task_update WHERE update_id=$id";
// you need to execute the query
$updatesresult = mysql_query($updatesquery);
while($rows1 = mysql_fetch_assoc($updatesresult)) // <-- no semicolon here
{
$update_date2 = $rows1['update_date'];
$status = $rows1['ocome'];
$update_id = $rows1['update_id'];
echo '<font color="#FF0000">'.$update_date2.'</font><br><br>'.$status.'<br>';
}
echo '</div>'.
"<div id=\"concomm\">$comm</div>".
"<div id=\"confin\">$fin</div>".
'</tr>'.
'</table>'.
'</div>';
}
?>
你的内部while语句不应该以逻辑点的分号结束。请检查上面的代码,看看我为您发表评论的位置。
答案 4 :(得分:1)
内部后面有分号
while($rows1 = mysql_fetch_assoc($updatesquery));
{
// stuff
}
应该是
while($rows1 = mysql_fetch_assoc($updatesquery))
{
// stuff
}