如何在";“边做边做”;在php中不丢失变量

如何在";“边做边做”;在php中不丢失变量,php,function,while-loop,Php,Function,While Loop,这个“do while”给我一个特定表格的结果 do { comprobe($row_DatosConsulta['strCod']); ?> <tr class="edit"> <td class="text-center"> <?php echo $row_DatosConsulta['strCod']; ?> </td> <td class="text-center"&g

这个“do while”给我一个特定表格的结果

do {
comprobe($row_DatosConsulta['strCod']);
    ?>
    <tr class="edit">
          <td class="text-center"> <?php  echo $row_DatosConsulta['strCod']; ?> </td>
          <td  class="text-center"> <?php echo $row_DatosConsulta['strNombre'] ?> <?php echo $row_DatosConsulta['strApellido'] ?> </td>
          <td  class="text-center"> <?php echo $row_DatosConsulta['strMedidor'] ?> </td>
          <td  class="text-center"> <?php echo ObtenerDeuda($row_DatosConsulta['intDeuda']) ?></td>
          <td  class="text-center">
} while ($row_DatosConsulta = $Result->fetchArray(SQLITE3_ASSOC));
do{
comprobe($row_DatosConsulta['strCod');
?>
}而($row_DatosConsulta=$Result->fetchArray(SQLITE3_ASSOC));
我的问题是,当我尝试使用函数“comprobe”(一个位于另一个页面中的函数,但该页面包含在实际页面中)时,出现了一个错误,“Undefined variable”(未定义变量),因此我认为“do while”(执行时)没有将名称发送给该函数,按照该顺序,该函数无法工作

我需要用生成“do while”的所有数据执行一个函数。。。例如,如果表的“do while”生成了30个名称,那么我需要对每个名称执行30次该函数。 所以我的问题是,我怎么能做到

实际上我正在使用SQLITE3,我的函数就是下一个

function actualizardeudasusu(){
    $bd = new SQLite3('my_datebase.db');


$DatosConsulta = ("SELECT * FROM tblDeudas WHERE strCod='".$Codigo."' ");   
$Result = $bd->query($DatosConsulta)or die("Error in query: <span 
style='color:red;'>$query</span>");

$row_DatosConsulta = $Result->fetchArray(SQLITE3_ASSOC);

echo $DatosConsulta;


$CONTADOR = (" PRAGMA table_info(tblDeudas); ");
$ResultCont = $bd->query($CONTADOR)or die("Error in query: <span             
style='color:red;'>$query</span>");
 $conteoprevio = $ResultCont->fetchArray(SQLITE3_ASSOC);

   $comprobaciondedeuda = 0;
   $number = 0;

   do {
   $number++;
    ${"mes".$number} = $conteoprevio['name'];
    if ($row_DatosConsulta[${"mes".$number}] != 'pagado'){
        $comprobaciondedeuda = 1;
                    }
            }
    while ($conteoprevio = $ResultCont->fetchArray(SQLITE3_ASSOC));


if ($comprobaciondedeuda == 1){

$updateSQL = "UPDATE tblafiliacion SET 
                        intDeuda='1'
 WHERE strCod='".$codigo."' " ;
$Result = $bd->query($updateSQL)or die("Error in query: <span 
style='color:red;'>$query</span>");

} else {
$updateSQL = "UPDATE tblafiliacion SET 
                        intDeuda='0',
 WHERE strCod='".$codigo."' " ;
$Result = $bd->query($updateSQL)or die("Error in query: <span 
 style='color:red;'>$query</span>");
    }


  }
函数{
$bd=newsqlite3('my_datebase.db');
$DatosConsulta=(“从tblDeudas中选择*,其中strCod=”“$Codigo.”);
$Result=$bd->query($DatosConsulta)或die(“查询中的错误:$query”);
$row\u DatosConsulta=$Result->fetchArray(SQLITE3\u ASSOC);
echo$DatosConsulta;
$CONTADOR=(“PRAGMA table_info(TBLDUDAS);”);
$ResultCont=$bd->query($CONTADOR)或die(“查询中的错误:$query”);
$conteoprevio=$ResultCont->fetchArray(SQLITE3_ASSOC);
$comprobaciondeududa=0;
$number=0;
做{
$number++;
${“mes”。$number}=$conteoprevio['name'];
如果($row_DatosConsulta[${“mes”。$number}]!='pagado'){
$comprobaciondeududa=1;
}
}
而($conteoprevio=$ResultCont->fetchArray(SQLITE3_ASSOC));
如果($comprobaciondeududa==1){
$updateSQL=“更新tblafiliacion集合
intDeuda='1'
其中strCod=“$codigo.”;
$Result=$bd->query($updateSQL)或die(“查询中的错误:$query”);
}否则{
$updateSQL=“更新tblafiliacion集合
intDeuda='0',
其中strCod=“$codigo.”;
$Result=$bd->query($updateSQL)或die(“查询中的错误:$query”);
}
}

您的问题是
执行while
循环不是正确的解决方案

你的
第一次呼噜时是怎么做的?输入
do
body并尝试使用
$row\u DatosConsulta
。但是
$row\u DatosConsulta
未定义。为什么?因为它将在以后的
中定义,而
-检查

因此,使用
while
代替
do while

while ($row_DatosConsulta = $Result->fetchArray(SQLITE3_ASSOC)) {
    comprobe($row_DatosConsulta['strCod']);
    // do other  stuff here
}

为什么不就一会儿?似乎在第一次迭代中没有定义,因为您还没有获取行