php do 循环发现死循环。。请求帮助咯。。! 本帖最后由 xuzuning 于 2010-08-31 15:32:43 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你的循环条件是while(1),当然死循环! 这个条件不满足,永远也跳出循环 if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) ) { break; } 看着真眼花你整个do while就是个死循环 只有一个break 跳出条件取决于if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) ) 你测试下吧 while(1)这里我试过while($i<1);,但是有些东西都读取不出来。$mode2[money] = $mode2[bounty] - $mode2[bounty] * $config[taskmoney]; $mode2[pmoney] = round( ( $mode2[bounty] - $mode2[bounty] * $config[taskmoney] ) / $mode2[pnum], 2 ); $listmode2[] = $mode2;就是这块东西读取 不出来 if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) ) { break; }这块不可能是空的啊。。死循环。悲哀帮帮忙吧 这个帮不了你,因为涉及到业务逻辑的问题,别人都清楚,只有你自己最清楚。已经告诉你问题的原因了,就是没有满足跳出条件,至于这个跳出条件怎么设是业务逻辑的问题,只有你自己知道。记住,break只能跳出一层循环,你有两个while循环,要设两个break; 你的控释逻辑有问题!在你的所有 SQL 指令中 都有 tid=".$task[tid]. 的条件而在跳出循环这里的条件最宽松 $query = $_SGLOBAL['db']->query( "SELECT * FROM ".wk( "mode2" )." WHERE tid=".$task[tid]." ORDER BY mid ASC" ); if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) ) { break; }即便其他的查询都没有结果,在这里至少也应该有一条记录。这就是导致死循环的原因 那也不是!有点不明白,你为什么要 while(1) 呢?你在 #5 说不这样有些东西出不来但你整个循环中并没有改变查询条件(与第一次进入时相比),转多少次也还是那些东西能描述一下你打算做什么吗? $query = $_SGLOBAL['db']->query( "SELECT * FROM ".wk( "mode2" )." WHERE tid=".$task[tid]." ORDER BY mid ASC" ); while ($mode3 = $_SGLOBAL['db']->fetch_array( $query )){ $mode3[money] = $mode3[bounty] - $mode3[bounty] * $config[taskmoney]; $mode3[pmoney] = round( ( $mode3[bounty] - $mode3[bounty] * $config[taskmoney] ) / $mode3[pnum], 2 ); $listmode3[] = $mode3;} $listmode2 = array( ); $query = $_SGLOBAL['db']->query( "SELECT * FROM ".wk( "mode2" )." WHERE tid=".$task[tid]." ORDER BY mid ASC" ); if ($mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) { break; }我改成这样:能读出来。。但是有些又错了 <a href="javascript:var awardnum=document.getElementById('mode2_award').value;apply_draft('$value[did]','$task[tid]','$value[uid]','$value[username]','$task[uid]','$task[username]',awardnum,'$task[taskmode]');" onclick="return confirm('本操作不可恢复,确认采纳 $value[did] 稿件并支付吗?');"></a>请问这个提交以后是提交到哪的啊? break while(true)//和while(1)一样 不停循环! shopex 系统定义标签问题。请指点一二,谢谢了 帮帮忙急,万网空间网站因为耗资源被关停。 zend framework里的mail的问题 网站前台显示空白,后台正常 求下载YOUTUBE视频的PHP程序 问一个zen cart问题,这个比较难啊 AJAX PHP 循环之后点击状态更换图片 想开发一个网页游戏网站,请各位们指教一下如何架构 优化TCPDF类生成PDF php程序运行过多,物理内存占用太高,求解决 给dedecms关键字加链接 用PHP读取 mssql SERVER 数据库中的 IMAGE 字段
if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) )
{
break;
}
你整个do while就是个死循环 只有一个break 跳出条件取决于if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) ) 你测试下吧
$mode2[pmoney] = round( ( $mode2[bounty] - $mode2[bounty] * $config[taskmoney] ) / $mode2[pnum], 2 );
$listmode2[] = $mode2;
就是这块东西读取 不出来
{
break;
}这块不可能是空的啊。。死循环。悲哀帮帮忙吧
已经告诉你问题的原因了,就是没有满足跳出条件,至于这个跳出条件怎么设是业务逻辑的问题,只有你自己知道。记住,break只能跳出一层循环,你有两个while循环,要设两个break;
在你的所有 SQL 指令中 都有 tid=".$task[tid]. 的条件
而在跳出循环这里的条件最宽松
$query = $_SGLOBAL['db']->query( "SELECT * FROM ".wk( "mode2" )." WHERE tid=".$task[tid]." ORDER BY mid ASC" );
if ( !( $mode2 = $_SGLOBAL['db']->fetch_array( $query ) ) )
{
break;
}
即便其他的查询都没有结果,在这里至少也应该有一条记录。这就是导致死循环的原因
有点不明白,你为什么要 while(1) 呢?你在 #5 说不这样有些东西出不来
但你整个循环中并没有改变查询条件(与第一次进入时相比),转多少次也还是那些东西能描述一下你打算做什么吗?
while ($mode3 = $_SGLOBAL['db']->fetch_array( $query )){
$mode3[money] = $mode3[bounty] - $mode3[bounty] * $config[taskmoney];
$mode3[pmoney] = round( ( $mode3[bounty] - $mode3[bounty] * $config[taskmoney] ) / $mode3[pnum], 2 );
$listmode3[] = $mode3;}
$listmode2 = array( );
$query = $_SGLOBAL['db']->query( "SELECT * FROM ".wk( "mode2" )." WHERE tid=".$task[tid]." ORDER BY mid ASC" );
if ($mode2 = $_SGLOBAL['db']->fetch_array( $query ) )
{
break;
}我改成这样:能读出来。。但是有些又错了
while(true)//和while(1)一样 不停循环!