问题描述
|
我有以下代码。我想知道为什么我的“
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!更大的力量! :)
解决方法
你在里面的时候后面有一个分号
while($rows1 = mysql_fetch_assoc($updatesquery));
{
// stuff
}
应该
while($rows1 = mysql_fetch_assoc($updatesquery))
{
// stuff
}
, $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子句进行检索。几乎总是在执行单个大型查询然后运行多个较小的查询之后。
, 您有ѭ6results的结果吗?
尝试做
print_r($rows1); before line $update_date2 = $rows1[\'update_date\'];
并查看结果。
, 您正试图从从未执行过的查询中检索处理查询的结果。请注意,在开始循环搜索结果之前,您已调用mysql_query。然后注意,您尝试从从未在内部while循环内执行的查询开始获取结果。
, 是的,在另一个循环中有一段时间或另一种循环是可以的,因为这取决于您的业务逻辑。但是,您忘记了在while循环之前执行第二个查询。如果用8英镑之类的东西来做,那会更好,这样就不会浪费资源。
另外,我建议您不要打印出带有echo的DOM元素,而应像这样“ 9”将它们放置在那里。但是,即使您遇到这种情况,也有地方可以保持代码干净。这是我的建议:
<?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语句不应在逻辑点处以分号终止。请检查上面的代码,以查看我为您发表评论的位置。