PHP循环数据不会在while函数之外回显或者如何通过echo函数传递循环数据?

时间:2011-06-27 05:57:48

标签: php loops while-loop echo

我有一个数据循环只会回显while函数中的循环,但是如果我在while函数之外调用/ echo循环数据,它只运行第一个循环。

示例:

$num = mysql_num_rows($queryFromDB);
$i=0;
while($i < $num)
{
    $field1= mysql_result($queryFromDB,$i,"field1");
    $field2= mysql_result($queryFromDB,$i,"field2");

    $bothFields = $field1 . " " . $field2 "\n";

    // This will show 2 rows of data
    echo $bothFields;

    $i++;

    // This will only show 1 row of data. How can I pass the looped data to another variable?
    echo $bothFields;

}

我想要显示的输出是:

TITLE / HEADER在第一行走到这里

来自DB的第-1行数据

来自DB的第二行数据

这是实际的代码: $ num = mysql_num_rows($ qWoundAssessment);

$ I = 0; while($ i&lt; $ num) { $ wndType = mysql_result($ qWoundAssessment,$ i,“wndType”); $ wndNum = mysql_result($ qWoundAssessment,$ i,“wndNum”); $ wndLocation = mysql_result($ qWoundAssessment,$ i,“wndLocation”); $ wndStage = mysql_result($ qWoundAssessment,$ i,“wndStage”); $ wndL = mysql_result($ qWoundAssessment,$ i,“wndL”); $ wndD = mysql_result($ qWoundAssessment,$ i,“wndD”); $ wndW = mysql_result($ qWoundAssessment,$ i,“wndW”); $ wndAseptic = mysql_result($ qWoundAssessment,$ i,“wndAseptic”); $ wndIrrigate = mysql_result($ qWoundAssessment,$ i,“wndIrrigate”); $ wndIrrigateBox = mysql_result($ qWoundAssessment,$ i,“wndIrrigateBox”); $ wndPat = mysql_result($ qWoundAssessment,$ i,“wndPat”); $ wndCover = mysql_result($ qWoundAssessment,$ i,“wndCover”); $ wndCoverBox = mysql_result($ qWoundAssessment,$ i,“wndCoverBox”); $ wndSecure = mysql_result($ qWoundAssessment,$ i,“wndSecure”); $ wndSecureBox = mysql_result($ qWoundAssessment,$ i,“wndSecureBox”); $ wndQvisit = mysql_result($ qWoundAssessment,$ i,“wndQvisit”);

$ wnd =“ - ”。 $ wndType。 “”。 “#”。 $ wndNum。 “,”。 “地点 ” 。 $ wndLocation。 “,”。 “舞台”。 $ wndStage; $ wndSize =“SIZE”。 $ wndL。 “厘米” 。 “ X ” 。 $ wndW。 “厘米” 。 “ X ” 。 $ wndD; if($ wndAseptic ==“1”){$ wndAsepticTech =“使用无效技术”;} if($ wndIrrigate ==“1”){$ wndIrrigateWith =“IRRIGATE WITH”。 $ wndIrrigateBox;} if($ wndPat ==“1”){$ wndPatDry =“PAT DRY”;} if($ wndCover ==“1”){$ wndCoverWith =“COVER WITH”。 $ wndCoverBox;} if($ wndSecure ==“1”){$ wndSecureWith =“COVER WITH”。 $ wndSecureBox;} if($ wndQvisit ==“1”){$ wndQv =“Q VISIT”;}

if(isset($ wnd,$ wndSize,$ wndAsepticTech,$ wndIrrigateWith,$ wndPatDry,$ wndCoverWith,$ wndSecureWith,$ wndQv)){ $ woundCare = implode(“,”,数组($ wnd,$ wndSize,$ wndAsepticTech,$ wndIrrigateWith,$ wndPatDry,$ wndCoverWith,$ wndSecureWith,$ wndQv))。 “\ n \ n”;}

$ wndCare。= $ woundCare;

$ I ++; }

$ snWoundCare =“SN为伤病护理提供熟练的护理访问:”。 “\ n”。 $ wndCare;

如果我回显$ wndCare,它会显示实际循环数据的“未定义变量”错误。但是,如果我将此变量传递给PDF,它就可以工作。

SN为伤病护理提供熟练的护理访问:

- 压力ULCER#1,位置COCCYX,3,尺寸2.0CM X 1.5CM X 0.07,使用无菌技术,用正常盐水灌溉,干燥,用AQUACEL AG覆盖,盖上MEPILEX BORDER,Q VISIT

-SURGICAL WOUND#2,LOCATION(R)KNEE,尺寸29CM X 0CM X 0,使用无菌技术,用正常盐水灌溉,干燥,用AQUACEL AG覆盖,盖上MEPILEX BORDER,Q VISIT

================代码现在工作!!!这是我的最终解决方案====================== $ num = mysql_num_rows($ qWoundAssessment); $ I = 0; $ storeMyData = array(); while($ i&lt; $ num)     {     $ wnd =“ - ”。 mysql_result($ qWoundAssessment,$ i,“wndType”)。 “#”。 mysql_result($ qWoundAssessment,$ I “wndNum”)。 “, 地点 ” 。 mysql_result($ qWoundAssessment,$ i,“wndLocation”)。 “,舞台”。 mysql_result($ qWoundAssessment,$ I “wndStage”);     $ wndSize =“SIZE”。 mysql_result($ qWoundAssessment,$ i,“wndL”)。 “厘米” 。 “ X ” 。 mysql_result($ qWoundAssessment,$ i,“wndW”)。 “厘米” 。 “ X ” 。 mysql_result($ qWoundAssessment,$ i,“wndD”)。 “厘米”;     if(isset($ rowWoundAssessment ['wndAseptic'])){$ wndAsepticTech =“使用无效技术”;}     if(isset($ rowWoundAssessment ['wndIrrigate'])){$ wndIrrigateWith =“IRRIGATE WITH”。 mysql_result($ qWoundAssessment,$ I “wndIrrigateBox”);}     if(isset($ rowWoundAssessment ['wndPat'])){$ wndPatDry =“PAT DRY”;}     if(isset($ rowWoundAssessment ['wndCover'])){$ wndCoverWith =“COVER WITH”。 mysql_result($ qWoundAssessment,$ I “wndCoverBox”);}     if(isset($ rowWoundAssessment ['wndSecure'])){$ wndSecureWith =“SECURE WITH”。 mysql_result($ qWoundAssessment,$ I “wndSecureBox”);}     if(isset($ rowWoundAssessment ['wndQvisit'])){$ wndQvisit =“Q VISIT”;}

$wndCare = implode (", ", array($wnd, $wndSize, $wndAsepticTech, $wndIrrigateWith, $wndPatDry, $wndCoverWith, $wndSecureWith, $wndQvisit)). "\n\n";

    // This will show 2 rows of data

    $storeMyData[] = $wndCare ;  // store current data in array
    $i++;
}

/ *这将回显你存储的循环数据* / foreach($ storeMyData as $ prevData)

/ *或使用字符串连接 /加入数据 $ allFinalData2 =“”; / 这将回显你的loopData / / foreach($ storeMyData as $ prevData)     {         $ allFinalData2 = $ allFinalData2。$ prevData; //继续连接     } 回应“SN为伤病护理提供熟练的护理访问:”。 “\ n”。 $ allFinalData2;

感谢DhruvPathak和Antonio Laguna!你们是最棒的!刚刚结束了我的一天! 在房间里跳来跳去

2 个答案:

答案 0 :(得分:1)

这应该有效:

<?php
$wndCare = '';

while ($row = mysql_fetch_assoc($qWoundAssessment)){
    $wnd = '-'.$row['wndType'].' #'..$row['wndNum'].', LOCATION '.$row['wndLocation'].', STAGE '.$row['wndStage'];
    $wndSize = 'SIZE '.$row['wndL'].'CM X '.$row['wndW'].'CM X '.$row['wndD'];

    $wndAsepticTech = ($row['wndAseptic'] == 1) ? 'USING ASEPTIC TECHNIQUE' : '';
    $wndIrrigateWith = ($row['wndIrrigate'] == 1) ? 'IRRIGATE WITH '.$row['wndIrrigateBox'] : '';
    $wndPatDry = ($row['wndPat'] == 1) ? 'PAT DRY' : '';
    $wndCoverWith = ($row['wndCover'] == 1) ? 'COVER WITH'.$row['wndCoverBox'] : '';
    $wndSecureWith = ($row['wndSecure'] == 1) ? 'COVER WITH'.$row['wndSecureBox'] : '';
    $wndSecureWith = ($row['wndSecure'] == 1) ? 'COVER WITH'.$row['wndSecureBox'] : '';
    $wndQvisit = ($row['wndQvisit'] == 1) ? 'Q VISIT' : '';

    $wndCare .= implode (", ", array($wnd, $wndSize, $wndAsepticTech, $wndIrrigateWith, $wndPatDry, $wndCoverWith, $wndSecureWith, $wndQv)). '\n\n';
}
$snWoundCare = "SN TO PROVIDE SKILLED NURSING VISITS FOR WOUND CARE:" . "\n" . $wndCare;
?>

我看到的问题是你正在测试以前设置的所有变量,这可能会产生奇怪的事情,因为你有时会建立它们,有时却不会。

答案 1 :(得分:0)

我不确定您要对数据做什么。看来你想要存储 要在循环外使用它的所有数据,那么这就是要走的路:

<?php
$num = mysql_num_rows($queryFromDB);
$i=0;
$storeMyData = array();
while($i < $num)
{
    $field1= mysql_result($queryFromDB,$i,"field1");
    $field2= mysql_result($queryFromDB,$i,"field2");

    $bothFields = $field1 . " " . $field2 "\n";

    // This will show 2 rows of data
    echo $bothFields;
    $storeMyData[] = $bothFields ;  // store current data in array
    $i++;


}


/* this will echo your storedData of loop */
foreach($storeMyData as $prevData)
  {
     echo $prevData."\n";
  }

?>

 $allFinalData = implode("",$prevData);  // implode will join all the data as string
 echo $allFinalData."\n" ; 

/* or join the data using string concatenation */
 $allFinalData2 = "";
   /* this will echo your storedData of loop */
foreach($storeMyData as $prevData)
  {
    $allFinalData2 = $allFinalData2.$prevData ;  // keep on concatenating
  }

 echo $allFinalData2,"\n";

?>